【问题标题】:Scrapy Running multiple spiders from one fileScrapy 从一个文件运行多个蜘蛛
【发布时间】:2021-08-21 14:14:37
【问题描述】:
我制作了 1 个包含 2 个蜘蛛/类的文件。第二个蜘蛛使用第一个蜘蛛的一些数据。但它似乎不起作用。这是我启动和启动蜘蛛的方法
process=CrawlerProcess()
process.crawl(Zoopy1)
process.crawl(Zoopy2)
process.start()
你有什么建议
【问题讨论】:
标签:
python
html
css
web-scraping
scrapy
【解决方案1】:
您的代码将同时运行 2 个蜘蛛。
运行蜘蛛sequentially(完成Zoopy1后启动Zoopy2)可以通过@defer.inlineCallbacks实现:
from twisted.internet import reactor, defer
from scrapy.crawler import CrawlerRunner
from scrapy.utils.log import configure_logging
...
configure_logging()
runner = CrawlerRunner()
@defer.inlineCallbacks
def crawl():
yield runner.crawl(Zoopy1)
yield runner.crawl(Zoopy2)
reactor.stop()
crawl()
reactor.run()
替代选项(如果它适合您的任务) - 是将 2 个蜘蛛的逻辑合并到单个蜘蛛类中,