老师,请教scrapy redis 如何进行部分rule 增量抓取

来源:8-1 爬虫和反爬的对抗过程以及策略

慕莱坞6627921

2019-07-01

老师您好, 又来麻烦您了. 稍微学看下 跟了下源码头大看不懂.

start_url 是内容页的第一页, 有两个ruls规则 一个是抓取列表 一个是抓取详情页.

其中使用的老师讲的bloomfilter 进行过滤, 因为数据存在更新 就想列表不进入过滤, 但是单位时间不重复 头疼 啊啊

跟了下源码 scrapy_redis/scheduler enqueue_request方法中 有个request.dont_filter 开关,方法中参数的request 不知道怎么跟在哪里调用进来的, 晓得在parse 中的_parse_response 可以设置 dont_filter , 不过不晓得怎么进行下去

不过期间可能出现一个问题, 如果执行列表存在重复 就是循环了, 老师能不能本轮内单位有效, 还是说需要自己去处理下 过滤那块. 乱了, 不知道怎么下手了

写回答

2回答

bobby

2019-07-03

其实这种问题很好解决啊?

  1. 使用优先级队列

  2. 自己写一个脚本模拟enqueue_request的源码向队列中自己写入列表页的request,并把优先级设置高一点

    这样就能在获取下一个url的时候最快获取到你的列表页的url了

0
0

慕莱坞6627921

提问者

2019-07-01

或者说 我想让 list rule  在下一次开始 时候再次进行抓取  0.0

0
0

Scrapy打造搜索引擎 畅销4年的Python分布式爬虫课

带你彻底掌握Scrapy,用Django+Elasticsearch搭建搜索引擎

5796 学习 · 6290 问题

查看课程