有没有办法在Scrapy中延迟对递归链接爬网的请求?

时间:2019-05-06 13:53:05

标签: python request scrapy

我正在用Scrapy抓取news.crunchbase.com。如果我遵循遇到的实际链接,则在递归链接上执行的回调函数不会触发,但是如果我检索某些测试链接,则该函数可以正常工作。我以为问题出在时间上,因此想延迟递归请求。

编辑:来自here的答案确实设置了全局延迟,但是没有调整递归延迟。递归链接爬网立即完成-数据被抓取后立即

def parse(self, response):
    time.sleep(5)
    for post in response.css('div.herald-posts'):   
        article_url = post.css('div.herald-post-thumbnail a::attr(href)').get()

        if article_url is not None:
            print('\nGot article...', article_url, '\n')
            yield response.follow(article_url, headers = self.custom_headers, callback = self.parse_article)

        yield {
            'title': post.css('div.herald-post-thumbnail a::attr(title)').get(),
        }

1 个答案:

答案 0 :(得分:0)

这实际上足够了。

custom_settings = {
   "DOWNLOAD_DELAY": 5,
   "CONCURRENT_REQUESTS_PER_DOMAIN": 1
}

将子请求放入请求队列,并在父请求之后进行处理。如果请求与当前域无关,则会忽略DOWNLOAD_DELAY并立即完成请求。

P.S。我只是没有等到start_requests(self)处理整个url列表,因此以为我被禁止了。希望这对某人有帮助。