我在两个不同的脚本中有两个杂乱的蜘蛛
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'
}
}
}