有没有一种方法可以用Crawl.runner/进程运行两个spider,并将结果保存在两个单独的文件中



我在两个不同的脚本中有两个杂乱的蜘蛛

Spiders
Spider1.py
Spider2.py

蜘蛛中的代码示例如下:

from scrapy.crawler import CrawlerRunner
from twisted.internet import reactor
class Spider(scrapy.spider):
# some code
runner = CrawlerRunner(
settings={'FEEDS': 
{'../input/next.csv': {'format': 
'csv'}}})
runner.crawl(Spider)
d = runner.join()
d.addBoth(lambda _: reactor.stop())
reactor.run()

我使用以下代码从一个单独的脚本运行这两个蜘蛛:

import runpy as r

def run_webscraper():
r.run_path(path_name='Spider1.py') 
r.run_path(path_name='Spider2.py')
return
if __name__ == '__main__':
run_webscrapper()

当我尝试运行spider时,Spider1会运行并将结果保存在相应的csv文件中,但当执行spider2时,我会收到以下错误:

twisted.internet.error.Rreactor不可重启

关于如何修复代码,使两个spider运行并将结果保存在不同的文件(spider1.csv,spider2.csv(中,有什么想法吗?

这真的可能吗?

我相信你可以通过在每个蜘蛛中创建一个剪切设置来做到这一点,如下所示:

spider1:

class Spider1(scrapy.Spider):
name='spider1'
custom_settings = {
'FEEDS': {
'spider1.csv': {
'format': 'csv'
}
}
}

spider2:

class Spider2(scrapy.Spider):
name='spider2'
custom_settings = {
'FEEDS': {
'spider2.csv': {
'format': 'csv'
}
}
}

最新更新