我目前正在抓取网站以提取产品信息。该网站包含数百万[约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
有什么方法可以加快抓取过程。以目前的速度,我需要几天的时间来清理所有数据。任何见解都会非常有用。三江源
答案 0 :(得分:1)
确保在settings.py中将每个域的并发请求设置为32。
如果这没有帮助,那么该网站最有可能限制你。站点通常具有某种非/ spider / crawl检测功能,如果它们检测到来自同一IP的大量请求,则会阻塞或阻塞。
我使用由scrapy团队运营的http://www.crawlera.com。它通过代理网络处理您的所有请求并处理禁令等。这是我能够高速刮擦的唯一方式。
答案 1 :(得分:0)
您可以根据需要设置并发请求,并且当网站阻止您时,crawlera非常有用,因为crawlera是一种代理控制器,可以为每个请求传递不同的IP。当然它的付款所以你必须花钱。所以,在购买一些额外的服务之前,我会建议您尝试爬行。你可以 -
1)尝试将抓取连接到高速互联网,因为它很重要。
2)尝试将单个爬网拆分为多个并运行蜘蛛。
3)如果可能,您可以减少下载延迟。
任何人......