我如何将从一个spider抓取的URL发送到另一个spider的start_urls
?在
具体来说,我想运行一个spider,它从XML页面获取URL的列表。在URL被检索后,我希望它们被另一个蜘蛛用来抓取。在
from scrapy.spiders import SitemapSpider
class Daily(SitemapSpider):
name = 'daily'
sitemap_urls = ['http://example.com/sitemap.xml']
def parse(self, response):
print response.url
# How do I send these URL's to another spider instead?
yield {
'url': response.url
}
将URL作为字符串写入文件。从另一个spider中的同一个文件中读取它们。在
从第一个spider可以将url保存在某个数据库中,或者通过管道发送到某个队列(Zerro、Rabbit MQ、Redis)。在
第二个spider可以使用方法-start_requests获取url
或者url可以通过cli或{a3}从队列代理传递给spider。或者spider可以从broker启动,然后启动spider通过start_请求获取他的url。在
真的有很多方法可以做到。这种方式取决于为什么需要将url从一个spider传递到另一个spider。在
您可以查看以下项目:Scrapy Cluster,Scrapy Redis。也许这就是你要找的。在
你为什么要用不同的蜘蛛来满足这种需求?在
您可以只拥有一个spider,而不是将URL传递给另一个spider,只需在
parse
方法中yield
另一个Request
。在相关问题 更多 >
编程相关推荐