python - scrapy 加速爬行

标签 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

有什么方法可以加快抓取过程。以目前的速度,我需要几天时间才能抓取所有数据。任何见解都会非常有帮助。谢谢

最佳答案

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

如果这没有帮助,很可能是网站限制了您。网站通常具有某种非/蜘蛛/抓取检测功能,如果它们检测到来自同一 IP 的大量请求,则往往会阻止或限制。

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

关于python - scrapy 加速爬行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28392616/

相关文章:

python - 我的 DataFrame 有 NaN 值但不应该

Python:尝试通过 SSH 执行命令时 Paramiko 挂起

django - 在 Django 中使用 Scrapy DjangoItem 的最佳方式

python - 垃圾。从 div 中提取 html 而不包装父标签

html - 如何使用scrapy访问下表的所有特定数据?

python - 更改字典中的多个键,同时在 Python 中执行 timedelta 操作

Python Celery 可以从进程内线程开始吗?

python - 迁移 python 2 到 3 : types. 文件类型

python - 安装 Python 时出现问题

python - 在迭代时将键设置为字典中的相同值