采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师,如题。 按照之前请教过您的方案,尝试通过Redis的 pub/sub实现增量爬虫,执行时,发现yield Request()后没执行正常去callback函数。 但是在debug模式下打来断点,就能正常进入,请老师帮忙分析下 代码如下: 日志如下: 日志在如截图的那里,感觉就卡住了,正常解析的话,还有很多日志的。
PS: 尝试在for循环中sleep,也没用
你如果是通过脚本放入到redis中的脚本不一定会在start_requests中获取到,也有可能是放到parse函数的逻辑中出现,你再parse函数中也打印一个日志看看
老师,关于增量爬虫,我这里的做法是这样: 1、业务系统将 电影名称 发布到redis队列 2、爬虫系统,在spider 的 start_requests 方法中(因为没有start_url,一定会从start_requests方法执行吧),通过redis 的pub/sub 监听消息,接受到消息后,format成完整的url, 再 yield Request 给Scrapy 下载。 现在遇到的问题是: 1、从日志上看,已经接收到redis队列的消息了,并且已经提交给Scarpy 的engine,然后似乎就卡在那里了。 日志的最后两行是这样: 2020-01-07 17:00:50 [selenium.webdriver.remote.remote_connection] DEBUG: Finished Request 2020-01-07 17:00:50 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://search.douban.com/movie/subject_search?search_text=%E6%9D%83%E5%88%A9%E7%9A%84%E6%B8%B8%E6%88%8F&cat=1002> (referer: None) 然后就没下文了。 PS: 1、yield Request里的url是没问题的,因为单独 yield Request这个url,是正常的。 2、然后我在debug模式下运行,在yield Request的那行打断点,就能正常执行(如果是debug模式,但不打断点,也不执行);但是发现执行完,进程就被结束掉了,怎样才能让进程不结束,让redis 一直监听消息? 老师帮忙看看我 start_requests 里面的代码,是不是有什么问题 谢谢
这种需要使用scrapy-redis不要直接使用scrapy完成,你现在使用的是scrapy没有使用scrapy-redis吧
好的,老师。 因为任务量不是很大,暂时不需要分布式爬虫,所以本来不想引入scrspy-redis的。就想结合redis的pub/sub来实现增量爬取的,就遇到这个问题了。
登录后可查看更多问答,登录/注册
带你彻底掌握Scrapy,用Django+Elasticsearch搭建搜索引擎
4.7k 30
2.5k 18
1.1k 18
1.3k 15
2.7k 15