当CONCURRENT_REQUESTS为16(默认值)时,不慎跳过请求

时间:2019-07-12 00:15:19

标签: scrapy

如果CONCURRENT_REQUESTS设置为默认值16,Scrapy将跳过请求。

我正在尝试使用草率的SiteMap蜘蛛传递一堆网址,并且随机跳过了43个网址中的2-3个。它不为他们调用解析函数。当我在start_request中打印请求的长度时,它给出43,但是parse函数仅被调用39-40次。

但是,奇怪的是,当我在settings.py文件中设置CONCURRENT_REQUESTS = 1时,它可以正常工作。以前它被设置为默认值16。

MySpider(SitemapSpider)类:

name = "sitemap_spider"


def __init__(self,config='', **kwargs):

    self.sitemap_urls = self.config["sitemap_urls"]
    self.other_urls = self.config["other_urls"]
    super(MySpider,self).__init__()

    options = webdriver.ChromeOptions()
    options.add_argument('--headless')

    self.driver = webdriver.Chrome(chrome_options=options)



def start_requests(self):
    requests = list(super(MySpider, self).start_requests())
    requests += [scrapy.Request(x, self.parse) for x in self.other_urls]
    self.logger.info("requests: " + str(requests))
    return requests

def parse(self, response):
    # here I have a long parsing code#

如何增加并发请求会跳过一些URL。它没有足够的容量吗?

0 个答案:

没有答案