我正在使用Scrapy CrawlSpider类来抓取电子商务网站的分类页面。问题是,大约5%的请求在5次重试后被拒绝,并且不会达到100%的已知类别。
我的解决方法涉及到第二个爬行器(scrapy.Spider),它从数据库中获取丢失的已知URL,并简单地重新抓取它们。这样我就达到了100%的成绩。
问题是,这是两个不同的爬虫,它们位于两个不同的python文件中,需要由cron作业分别触发。此外,我只是简单地将parse_item函数复制到另一个刮除器,如果需要的话,现在需要在这两个刮除器上进行更改。
class myspider(CrawlSpider):
name = 'categories'
...
def parse_item(self, response):
...
yield item
class myspider(scrapy.Spider):
name = 'recrawler'
...
def parse_item(self, response):
...
yield item如何扩展CrawlSpider类以在每个完成的循环之后重新爬行,或者以某种方式调用另一个爬行器?
发布于 2021-08-07 05:42:24
问题是,大约5%的请求在5次重试后被拒绝,并且不会达到100%的已知类别。
增加DOWNLOAD_DELAY并降低CONCURRENT_REQUESTS_PER_DOMAIN。或者使用一些代理并在每次请求时轮换它。
不要通过引入另一个问题来解决一个问题。
顺便说一句,scrapy确实支持启动多个爬虫,并并行运行它们。检查文档Running multiple spiders in the same process。
https://stackoverflow.com/questions/68689634
复制相似问题