我目前正在抓取网站以提取产品信息。该站点包含数百万 [大约 2000 万] 的产品信息,我需要提取其中的每一个。我需要加快抓取速度,因为我的爬虫目前每分钟只能抓取几百页。
这是我的爬虫示例代码。
class XYSspider(CrawlSpider):
name = "XYZ"
allowed_domains = ["www.xyz.info"]
start_urls = ['http://www.xyz.info/']
rules = [
Rule(LinkExtractor(allow=r'\.kat$'), follow=True),
Rule(LinkExtractor(allow=r'/id_\d+/'), callback='parse_product'),
]
def parse_product(self, response):
item = DmozItem()
item['title'] = response.xpath('//title/text()').extract()[0].encode('utf-8')
yield item
有什么方法可以加快抓取过程。以目前的速度,我需要几天时间才能抓取所有数据。任何见解都会非常有帮助。谢谢
最佳答案
确保在 settings.py 中将每个域的并发请求数设置为 32。
如果这没有帮助,很可能是网站限制了您。网站通常具有某种非/蜘蛛/抓取检测功能,如果它们检测到来自同一 IP 的大量请求,则往往会阻止或限制。
我使用 http://www.crawlera.com由 scrapy 团队管理。它通过他们的代理网络路由您的所有请求并处理禁令等。这是我能够高速抓取的唯一方式。
关于python - scrapy 加速爬行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28392616/