【发布时间】:2018-08-12 21:19:28
【问题描述】:
我想在 for 循环中运行 Scrapy,列表中的每个 URL 一个循环。 (注意:我不希望所有这些 URL 都是 start_urls,我需要它们一次运行一个)。
在第一次循环迭代后,我的第一次尝试给了我twisted.internet.error.ReactorNotRestartable 错误。
在 SO 上的搜索给出了以前的答案,说 process.start(stop_after_crawl=False) 应该可以解决这个问题。这摆脱了 Twisted 错误,但现在只是在循环的第一次迭代后挂起。这不是那个问题的重复。
我当前的代码是:
for url in urls:
process = CrawlerProcess({
'USER_AGENT': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)',
'DEPTH_LIMIT': 4
})
process.crawl(MySpider, url)
process.start(stop_after_crawl=False)
第一个 URL 运行良好,然后就挂了:
'response_received_count': 1,
'scheduler/dequeued': 1,
'scheduler/dequeued/memory': 1,
'scheduler/enqueued': 1,
'scheduler/enqueued/memory': 1,
'start_time': datetime.datetime(2018, 8, 12, 21, 12, 29, 963422)}
2018-08-12 22:12:30 [scrapy.core.engine] INFO: Spider closed (finished)
【问题讨论】:
标签: python-3.x scrapy twisted