采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
1、我提供一个api接受url,在推入队列,scrapy-redis监听队列,抓取数据后直接返回给api,不入库。这样搞貌似实现不了返回给接口。
2、还有一个问题,scrapy-redis是不会停止了,如果数据跑晚了怎么通知后端我已经完成了
老师给个思路把!
是的,这是两个进程,所以这个之间要实现通信需要有一个消息通信机制。这个消息通信机制比较多,比如使用redis,使用rabbitmq都可以。以及kafka也行,这里最简单的是redis和rabbitmq了,你的api服务直接发送给scrapy-redis之后就一直等着redis或者rabbitmq中是否有数据,scrapy-redis抓取完成以后直接将数据放到redis中,这样就行了
scrapy-redis启动后就不会停止了,如果数据跑完了你也可以采用上面的思路,跑完以后将redis中的一个变量设置为true就行了,这样你的后端服务只管监听这个变量值就行了
第二个问题,我好像无法判断数据是否已经跑完没有,scrapy-redis接受1000条数据,能知道的是每条数据返回到redis的时间,但好像无法得到什么时候跑完,这个好像无法判断,只能判断每条数据。
什么时候跑完 可以设置一个redis中的队列如果1分钟内都没有url再来了 就可以证明数据已经抓取完了
非常感谢!
登录后可查看更多问答,登录/注册
带你彻底掌握Scrapy,用Django+Elasticsearch搭建搜索引擎
4.7k 30
2.5k 18
1.1k 18
1.3k 15
2.7k 15