我目前正在抓取一个网站,以提取产品信息。该网站由大约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
有没有什么方法可以加快抓取过程。以目前的速度,我需要几天的时间来抓取所有的数据。任何见解都会很有帮助。谢谢你
发布于 2015-02-09 01:35:55
确保在settings.py中将每个域的并发请求数设置为32。
如果这不起作用,它很可能是网站在扼杀你。站点通常具有某种类型的非/爬虫/爬虫检测,如果它们检测到来自同一IP的大量请求,则倾向于阻止或限制。
我使用的是http://www.crawlera.com,它是由scrapy团队运行的。它通过他们的代理网络路由你的所有请求,并处理禁令等。这是我能够高速抓取的唯一方法。
发布于 2016-04-13 15:29:32
你可以随心所欲地设置并发请求,当站点阻止你时,crawlera是很有用的,因为crawlera是一种代理轮转器,它为每个请求传递不同的IP。当然是有偿的,所以你必须花钱。所以,在购买一些额外的服务之前,我会建议你先试一试抓取。你可以-
1)尝试将你的爬虫连接到高速互联网,因为这在很大程度上很重要。
2)尝试将一次爬行拆分成多个爬行,然后运行蜘蛛。
3)尽量减少下载延迟。
任何许多.....
https://stackoverflow.com/questions/28392616
复制相似问题