a5.gif

keoki

GF  2021-02-25 22:38
(一些脚本:https://bbs.imoutolove.me/read.php?tid=1353704)

分享一个爬虫吧,可爬2048,cunhua,laowang,moxing论坛最新帖子

主要目的是省去了每次上这几个论坛找资源的时间,可以一键知道最新的资源贴里有没有你想要的。

可以根据关键词,发帖作者名,筛选出最新发布的帖子里符合对应条件的帖子,把结果写入对应的html文件,显示效果类似论坛的图片模式,可直接点击链接进入帖子页面,参考下图。

可设置需要爬取的对应版块号,爬取页数,和需要排除的关键字,我把我的配置贴在下图以供参考。

爬取的结果会缓存到本地,每次爬取会对比缓存,筛选出之前爬取中没出现过的帖子放在html文件的最前面。







需要python3.8或以上

分别运行:

复制代码
  1. python daily_updates.py cunhua
  2. python daily_updates.py moxing
  3. python daily_updates.py laowang
  4. python daily_updates.py 2048
附件: southplus.zip (29 K) 下载次数:489

0574b69b9d3d65e5.jpg

a0507658

B1F  2021-03-01 20:06
(为什么显示的是我的数字ID _(:з」∠)_)
问下楼主的运行环境,我用python 跑了一下发现xml没更新
用pycharm,有些语法错误?所以问下楼主是怎么跑这个的?

0574b69b9d3d65e5.jpg

a0507658

B2F  2021-03-01 20:26
(为什么显示的是我的数字ID _(:з」∠)_)
pycharm运行报错
   platform = sys.argv[1]
IndexError: list index out of range
定位到
    try:
        platform = sys.argv[1]
这个怎么解决?

0574b69b9d3d65e5.jpg

a0507658

B3F  2021-03-01 20:32
(为什么显示的是我的数字ID _(:з」∠)_)
上一个问题将 platform = sys.argv[1]
改为 platform = sys.argv[0]之后解决了
然后 原来的代码
    else:
        if (sub_list := subs_dict.get(platform)):
            daily_update = Daily_update(platform, page_number, sub_list,
                                        include, include_2nd, exclude,
                                        fav_authors)
            daily_update.run()

这一段首先将if报错的if (sub_list := subs_dict.get(platform))改为if (sub_list == subs_dict.get(platform))
然后提示NameError: name 'sub_list' is not defined就很迷,这个错误还是定位到这个if判断这里
但是
sub_list在之前就定义了啊,卡到这里了,楼主大佬能不能帮我看看,谢谢了。

0574b69b9d3d65e5.jpg

a0507658

B4F  2021-03-03 14:15
(为什么显示的是我的数字ID _(:з」∠)_)

回 50楼(keoki) 的帖子

python小白,问下所谓的传参数
先运行 python daily_updates.py cunhua
是指先在cmd里执行 python daily_updates.py cunhua这么命令么
压缩包解压只有5个html文件和一个daily_updates.py
所以正确的用法是用cmd转到southplus这个目录下,然后执行python daily_updates.py cunhua?
有点难受,我的库都装在anaconda自带的python3.7里,之前几个包一直装不上_(:з」∠)_,然后百度的时候pip也没法更新

0574b69b9d3d65e5.jpg

a0507658

B5F  2021-03-03 14:22
(为什么显示的是我的数字ID _(:з」∠)_)
F:\Downloads\southplus>python daily_updates.py cunhua
  File "daily_updates.py", line 353
    if (sub_list := subs_dict.get(platform)):
                 ^
SyntaxError: invalid syntax

0574b69b9d3d65e5.jpg

a0507658

B6F  2021-03-03 14:25
(为什么显示的是我的数字ID _(:з」∠)_)
F:\Downloads\southplus>python daily_updates.py cunhua
Traceback (most recent call last):
  File "daily_updates.py", line 353, in <module>
    if (sub_list == subs_dict.get(platform)):
NameError: name 'sub_list' is not defined

0574b69b9d3d65e5.jpg

a0507658

B7F  2021-03-03 14:30
(为什么显示的是我的数字ID _(:з」∠)_)

0574b69b9d3d65e5.jpg

a0507658

B8F  2021-03-03 17:18
(为什么显示的是我的数字ID _(:з」∠)_)

回 楼主(keoki) 的帖子

大佬,问下你的python是3.8还是3.9
另外问下你的etree是怎么导入的。
我已经阿里pip了xlml

但是pycharm里 from lxml import etree etree下还是有红色波浪线。
是不是因为我是python3.7?