通用爬虫默认对特定爬取进行优化的技巧及技巧
优采云 发布时间: 2021-04-27 01:13通用爬虫默认对特定爬取进行优化的技巧及技巧
广泛的爬网
Scrapy默认情况下优化特定的爬网。这些站点通常由单独的Scrapy Spider处理,但这不是必需的,也不是必需的(例如,还有一些通用的爬网程序可以处理任何给定的站点)。
除了此“重点抓取工具”会在抓取某个网站后停止,或者在没有更多请求的情况下停止抓取,还有一种通用的抓取类型,可以抓取大量(甚至是无限个)网站,仅受时间或其他限制。这种采集器称为“广泛搜寻”,通常在搜索引擎中使用。
一般爬虫通常具有以下一般特征:
如上所述,Scrapy的默认设置针对特定的采集器(而不是常规的采集器)进行了优化。但是,鉴于其异步体系结构,Scrapy也非常适合常规爬网程序。本文文章总结了将Scrapy用作通用爬网程序所需的一些技能,以及针对通用爬网程序的相应Scrapy设置的一些建议。
增加并发性
并发是指同时处理的请求数。它具有全局限制和局部限制(每个网站)。
Scrapy的默认全局并发限制不适合同时爬网大量网站,因此您需要增加此值。增加的数量取决于您的采集器可以占用的CPU数量。通常,可以在开始时将其设置为100。但是最好的方法是进行一些测试,以获取Scrapy进程占用的CPU与并发数量之间的关系。为了优化性能,您应该选择一个并发编号,以使CPU使用率在80%到90%之间。
增加全局并发数量:
CONCURRENT_REQUESTS = 100
降低日志级别
执行常规爬网时,通常只注意爬网的速度和遇到的错误。 Scrapy使用INFO日志级别报告此信息。为了减少CPU使用率(和日志存储要求),在生产环境中执行常规爬网时,不应使用DEBUG日志级别。但是,在开发过程中使用DEBUG应该可以接受。
设置日志级别:
LOG_LEVEL = 'INFO'
禁用cookie
除非您确实需要它,否则请禁用cookie。常规爬网不需要Cookie(搜索引擎会忽略Cookie)。禁用Cookie可以减少Scrapy采集器在内存中记录的CPU使用率和跟踪并提高性能。
禁用cookie:
COOKIES_ENABLED = False
禁止重试
重试失败的HTTP请求将降低抓取效率,尤其是当站点响应速度非常慢(甚至失败)时,访问此类站点将导致超时并重试多次。这是不必要的,并且还占用了爬网程序对其他站点进行爬网的能力。
禁止重试:
RETRY_ENABLED = False
减少下载超时
如果您正在抓取非常慢的连接(通常对于一般抓取工具而言并不重要),则减少下载超时将使被卡住的连接迅速被放弃,并释放了处理其他站点的能力。
减少下载超时时间:
DOWNLOAD_TIMEOUT = 15
禁止重定向
除非您对后续重定向感兴趣,请考虑关闭重定向。执行常规爬网时,常规方法是保存重定向的地址并在后续爬网中对其进行分析。这样可以确保每批抓取的请求数是一定数量,否则重定向循环可能会导致抓取器在某个站点上消耗过多的资源。
关闭重定向:
REDIRECT_ENABLED = False
启用“ Ajax可抓取页面”爬网
某些网站(根据2013年的经验数据占1%)将其声明为可抓取的Ajax。这意味着网站提供了最初仅由ajax获得的数据的纯HTML版本。 网站有两种声明方式:
使用#!在url中-这是默认方法;使用特殊的元标记-在“主页”,“索引”页面中使用。
Scrapy自动解决(1);解决(2),您需要启用:
AJAXCRAWL_ENABLED = True
常规爬网通常会爬网大量的“索引”页面; AjaxCrawlMiddleware可以帮助您正确地进行爬网。由于某些性能问题,并且对特定的爬网程序没有意义,因此默认情况下,中间件处于关闭状态。