通用爬虫默认对特定爬取进行优化的技巧及技巧

优采云 发布时间: 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可以帮助您正确地进行爬网。由于某些性能问题,并且对特定的爬网程序没有意义,因此默认情况下,中间件处于关闭状态。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线