从一个文件中抓取 运行 多个蜘蛛
Scrapy Running multiple spiders from one file
我用 2 个 spiders/classes 制作了 1 个文件。第二个蜘蛛使用了第一个蜘蛛的一些数据。但它似乎不起作用。这是我启动和启动蜘蛛所做的工作
process=CrawlerProcess()
process.crawl(Zoopy1)
process.crawl(Zoopy2)
process.start()
你有什么建议
您的代码将同时 运行 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 个蜘蛛合并到单个蜘蛛 Class,
我用 2 个 spiders/classes 制作了 1 个文件。第二个蜘蛛使用了第一个蜘蛛的一些数据。但它似乎不起作用。这是我启动和启动蜘蛛所做的工作
process=CrawlerProcess()
process.crawl(Zoopy1)
process.crawl(Zoopy2)
process.start()
你有什么建议
您的代码将同时 运行 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 个蜘蛛合并到单个蜘蛛 Class,