【发布时间】:2021-01-07 17:00:48
【问题描述】:
我想知道是否有办法重新启动爬虫。这是我的代码的样子:
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
from scrapy.crawler import CrawlerProcess
results = set([])
class SitemapCrawler(CrawlSpider):
name = "Crawler"
start_urls = ['www.example.com']
allowed_domains = ['www.example.com']
rules = [Rule(LinkExtractor(), callback='parse_links', follow=True)]
def parse_links(self, response):
href = response.xpath('//a/@href').getall()
results.add(response.url)
for link in href:
results.add(link)
def start():
process.crawl(Crawler)
process.start()
for link in results:
print(link)
如果我尝试调用start() 两次,它会运行一次而不是给我这个错误:
raise error.ReactorNotRestartable()
twisted.internet.error.ReactorNotRestartable
我知道这是一个普遍的问题,所以我不希望有任何代码,但我只想知道如何解决这个问题。提前致谢。
【问题讨论】:
-
重启是什么意思?您是要同时运行两个爬虫实例,还是在不知何故停止后重新启动爬虫。
-
@ibilgen,我的意思是第一次运行爬虫,直到它完成,然后再次运行它。
-
我建议你使用独立脚本启动爬虫,然后你可以随心所欲地启动爬虫。