scrapy加速爬行

时间:2015-02-08 09:52:44

标签: python python-2.7 scrapy

我目前正在抓取网站以提取产品信息。该网站包含数百万[约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

有什么方法可以加快抓取过程。以目前的速度,我需要几天的时间来清理所有数据。任何见解都会非常有用。三江源

2 个答案:

答案 0 :(得分:1)

确保在settings.py中将每个域的并发请求设置为32。

如果这没有帮助,那么该网站最有可能限制你。站点通常具有某种非/ spider / crawl检测功能,如果它们检测到来自同一IP的大量请求,则会阻塞或阻塞。

我使用由scrapy团队运营的http://www.crawlera.com。它通过代理网络处理您的所有请求并处理禁令等。这是我能够高速刮擦的唯一方式。

答案 1 :(得分:0)

您可以根据需要设置并发请求,并且当网站阻止您时,crawlera非常有用,因为crawlera是一种代理控制器,可以为每个请求传递不同的IP。当然它的付款所以你必须花钱。所以,在购买一些额外的服务之前,我会建议您尝试爬行。你可以 -

1)尝试将抓取连接到高速互联网,因为它很重要。

2)尝试将单个爬网拆分为多个并运行蜘蛛。

3)如果可能,您可以减少下载延迟。

任何人......