【发布时间】:2017-09-19 07:52:00
【问题描述】:
我正在从数千个网页中获取更新。可以有多个具有相同域的页面。我已将 DOWNLOAD_DELAY 设置为 1 秒,以免服务器过载。
Spider 运行良好,但如果同一域的 100 个 url 彼此相邻,它会减慢爬网速度,因为 Spider 必须在每次请求后等待 1 秒。
是否可以让它抓取具有不同域的下一个 url,这样蜘蛛就不必等待?
例如:
CONCURRENT_REQUESTS = 3
DOWNLOAD_DELAY = 1
网址:A.com/1 ,A.com/2 ,A.com/3 ,A.com/4 ,B.com/1 ,B.com/2 ,B.com/3
Spider 将开始抓取前三个 url。由于下载延迟,至少需要三秒钟。但如果它处理 B.com/1 而不是 A.com/2(例如),它会更快。
class MainSpider(scrapy.Spider):
...
def __init__(self, scraping_round, frequencies=None):
super(MainSpider, self).__init__())
...
def start_requests(self):
for url in self.urls:
yield scrapy.Request(url=url, callback=self.parse, errback=self.err, dont_filter=True)
也许我应该重新排序urls 列表。
【问题讨论】:
标签: python python-2.7 scrapy web-crawler