当我执行以下代码时,出现twisted.internet.error.ReactorNotRestartable
错误:
from time import sleep
from scrapy import signals
from scrapy.crawler import CrawlerProcess
from scrapy.utils.project import get_project_settings
from scrapy.xlib.pydispatch import dispatcher
result = None
def set_result(item):
result = item
while True:
process = CrawlerProcess(get_project_settings())
dispatcher.connect(set_result, signals.item_scraped)
process.crawl('my_spider')
process.start()
if result:
break
sleep(3)
这是第一次,然后我得到错误。我每次都创建process
变量,那么问题是什么?
我能像这样解决这个问题。
process.start()
只应调用一次。默认情况下,^{} 的^{} 将在所有爬虫程序完成后停止它创建的扭曲反应器。
如果在每次迭代中创建
process
,则应该调用process.start(stop_after_crawl=False)
。另一个选择是自己处理扭曲的反应器并使用^{} 。The docs have an example就这么做。
参考号http://crawl.blog/scrapy-loop/
相关问题 更多 >
编程相关推荐