Scrapy 增加不同领域的刮痧的一致性?

Scrapy 增加不同领域的刮痧的一致性?,scrapy,Scrapy,我正在尝试配置scrapy以跟踪外部链接 同时,我有DOWNLOAD\u DELAY=3,所以这对服务器是礼貌的 有没有办法将scrapy配置为立即并行下载外部链接 从日志中可以看出,外部链接与内部链接位于同一队列中 我的蜘蛛是: 16 class RedditSpider(scrapy.Spider): 17 name = "reddit" 18 start_urls = ['https://www.reddit.com/'] 19 20 def parse(

我正在尝试配置
scrapy
以跟踪外部链接

同时,我有
DOWNLOAD\u DELAY=3
,所以这对服务器是礼貌的

有没有办法将
scrapy
配置为立即并行下载外部链接

从日志中可以看出,外部链接与内部链接位于同一队列中

我的蜘蛛是:

 16 class RedditSpider(scrapy.Spider):
 17     name = "reddit"
 18     start_urls = ['https://www.reddit.com/']
 19
 20     def parse(self, response):
 21         digest = hashlib.md5(response.body).hexdigest()
 22         if pages.find_one({'digest': digest}):
 23             return
 24         links = LinkExtractor(allow=()).extract_links(response)
 25         urls = [l.url for l in links]
 26         pages.insert_one({
 27             'digest': digest,
 28             'url': response.url,
 29             'links': urls,
 30             'body': response.text
 31         })
 32         for url in urls:
 33             yield scrapy.Request(url, callback=self.parse)

是的,scrapy通常会并行地刮纸。您可以在scrapy项目的settings.py中修改/替代以下设置:

  • 并发请求
  • 每个域的并发\u请求\u
(见附件)

推荐值:

虽然每个\u域的并发\u请求应设置为不太高的值,以便对服务器礼貌(例如,低个位数),但并发\u请求应尽可能高(而不会耗尽内存)。。。因此,此处建议值大于100

不幸的是,scrapy中的队列不是完美的,如果队列顶部有多个并发的_请求到同一个域(例如reddit),这些请求将阻止并行处理其他请求,直到处理完足够多的请求,并将第一个外部域分配到处理槽

因此,让并发的_请求值尽可能高是这里的关键