我正在构建一个scrapy项目,其中有多个蜘蛛(每个域都有一个蜘蛛)。现在,被抓取的网址会动态地从给定查询的用户开始。所以基本上我不需要进行广泛的抓取,甚至不需要链接。将有一个接一个的网址,我只需要使用选择器提取。所以我想,如果我只是将URL传递到scrapy蜘蛛可以消耗的消息队列中,我会没事的。但我无法弄清楚。我已经检查如何使scrapy中的start_url从消息队列中消耗?
https://github.com/darkrho/scrapy-redis
,但我觉得它不适合我的目的,我需要多个队列(每个蜘蛛单个队列)。 正如我已经开始学习,一种方法似乎是重写蜘蛛中的start_requests方法。但是在这里我还不清楚该怎么做(python和scrapy的新功能)。我可以将它作为任何普通的python脚本处理,并且使用(任何)消息队列的方法来处理它? 此外,我需要运行24 * 7的蜘蛛,并在队列中有请求时进行刮擦。我想我应该使用信号并在某处提出DontCloseSpider异常。但我在哪里做?我很迷茫。请帮忙。
下面是我在看的情景:
用户 - >查询 - > URL从abc.com - > ABC-蜘蛛
-> url from xyz.com -> xyz-spider
-> url from ghi.com -> ghi-spider
现在每个URL都有同样的事情被刮掉了每个网站。所以我有选择器在每个蜘蛛中做这件事。我需要的是,这只是一个单一的用户场景。当有多人用户时,会有多个不相关的网站进入同一个蜘蛛。所以这将是这样的:
QUERY1,QUERY2,QUERY3
abc.com - > url_abc1,url_abc2,url_abc3
xyz.com - > url_xyz1,url_xyz2,url_xyz3
GHI url_ghi1,url_ghi2,url_ghi3
因此,对于每个网站,这些网址都将动态传递,并将其推送到各自的消息队列中。 现在,每个为网站设计的蜘蛛都必须使用它们各自的队列,并且在消息队列中有请求时给我抓取的物品
问题是运行多个蜘蛛吗? – Nabin 2014-09-22 05:17:05
没有。问题是如何使消息队列中的蜘蛛消耗。 – Avinragh 2014-09-22 05:25:24
看看http://stackoverflow.com/questions/21694386/running-more-than-one-spiders-one-by-one – Nabin 2014-09-22 05:27:09