我正在用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(),
}
答案 0 :(得分:0)
这实际上足够了。
custom_settings = {
"DOWNLOAD_DELAY": 5,
"CONCURRENT_REQUESTS_PER_DOMAIN": 1
}
将子请求放入请求队列,并在父请求之后进行处理。如果请求与当前域无关,则会忽略DOWNLOAD_DELAY并立即完成请求。
P.S。我只是没有等到start_requests(self)处理整个url列表,因此以为我被禁止了。希望这对某人有帮助。