采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
因为用scrapy-redis的rediscrawlspider会先把符合的url全部加到队列中,在执行callback,所以调试很麻烦
有什么好的方法?
调试会麻烦? 目前主要麻烦的地方是哪里?和普通的debug是一样的啊
比如说Rule有很多条,但是有callback是最后一条也是详细页,会等所有满足callback的那条Ruel的url全部加入redis队列中,才会执行callback那条Rule
这就会出现这种:redis中都几百万条request了,但没有一条执行callback
rules = ( Rule(LinkExtractor(allow=r'11467\.com/\w+?/$')), Rule(LinkExtractor(allow=r'11467\.com/.*')), Rule(LinkExtractor(allow=r'11467\.com/\w+?/co/\d+\.htm$'), callback='parse_detail', follow=True),)
有没有办法设定Rule的优先级,让特定Rule优先处理,比如最后一条有callback的rule
scrapy-redis中默认使用的是优先队列, 你可以在放request的时候指定一下优先级让某些url放到队列的头部, 课程中已经讲过源码了 应该知道如何设置优先级吧
老师 这种情况是正常的吗?? 不是应该边爬边提取码? 比如说Rule有很多条,但是有callback是最后一条也是详细页,会等所有满足callback的那条Ruel的url全部加入redis队列中,才会执行callback那条Rule 这就会出现这种:redis中都几百万条request了,但没有一条执行callback
不是应该一边把request输入到redis队列中一边把request提出来解析吗?为什么要等request全部放到队列中才开始解析request?
登录后可查看更多问答,登录/注册
带你彻底掌握Scrapy,用Django+Elasticsearch搭建搜索引擎
4.8k 30
2.5k 18
1.1k 18
1.4k 15
2.8k 15