【问题标题】:web crawler performance网络爬虫性能
【发布时间】:2010-09-13 14:25:30
【问题描述】:

我很想知道在非常普遍的情况下(自制的业余网络爬虫)这种情况的表现如何。更具体地说,一个爬虫可以处理多少个页面。

当我说自制时,从各种意义上来说,2.4Ghz 核心 2 处理器、java 编写、50mbit 互联网速度等等。

非常感谢您在这方面分享的任何资源

非常感谢,

卡洛斯

【问题讨论】:

  • 如果您的程序高效,限制因素将是您的互联网连接速度。

标签: java performance web-crawler


【解决方案1】:

首先,您的计算机速度不会是限制因素;至于连接,你应该人为地限制你的爬虫的速度——如果你开始攻击它们,大多数网站都会禁止你的 IP 地址。换句话说,不要太快地抓取网站(对于 99.99% 的网站,每个请求 10 秒以上应该是可以的,但如果低于这个时间,后果自负)。

因此,虽然您可以在多个线程中抓取单个站点,但我建议每个线程抓取不同的站点(检查它是否也不是共享 IP 地址);这样一来,您就可以使您的连接饱和,从而降低被蜘蛛网站禁止的机会。

有些网站不希望您抓取网站的某些部分,您应该遵循一个常用的机制:robots.txt 文件。阅读链接的网站并实施。

另请注意,有些网站根本禁止任何自动抓取;取决于网站的管辖权(您的管辖权也可能适用),破坏它可能是非法的(您应对脚本所做的事情负责,“机器人做到了”甚至不是借口,更不用说辩护了)。

【讨论】:

  • “你应该人为地限制你的爬虫的速度” - 你可以在不同的站点之间弹跳以最大化爬取的速度,但不能锤击任何一个站点。因此没有必要限制爬虫的速度。所以在那个级别,你可以/将/应该最大化连接(这总是比机器慢)
  • 如果您同时抓取足够多的网站,那么您的计算机/连接的 seped 将成为限制因素。您应该只限制抓取单个站点(或单个 IP 地址,如果您真的需要)的速率。
  • @MarkR:我不知道被抓取的网站正在发生什么样的处理,但我想不出处理(存储/索引)页面的合理情况比下载它需要更长的时间。考虑一下,如果您同时下载它,那么您肯定会同时处理它,并且您将始终在您的机器之前最大化您的连接。
【解决方案2】:

根据我的经验,主要是制作网站爬虫,网络下载始终是限制因素。您通常可以在比下载下一页所需的时间更短的时间内将页面的解析(或用于稍后解析的存储)转移到不同的线程。

因此,请计算平均下载网页需要多长时间。乘以你下载的线程数,直到它填满你的连接的吞吐量,平均任何给定网络服务器的速度,数学是相当明显的。

【讨论】:

    【解决方案3】:

    如果您的程序足够高效,您的互联网连接将成为限制因素(正如罗伯特哈维在他的回答中所说)。

    但是,通过家庭互联网连接执行此操作,您可能会滥用您的提供商的服务条款。他们会对其进行监控,并最终会注意到您是否经常超出他们的合理使用政策。

    此外,如果他们使用透明代理,您可能会在达到他们的下载限制之前很久就将他们的代理敲死,所以要小心 - 确保您没有通过您的 ISP 的代理,无论是透明的还是其他的。

    为大多数用户设置了 ISP,以通过一些大型流媒体操作(视频或其他下载)进行中等水平的浏览。一次有 100 个待处理的大量微小请求可能不会让他们的代理服务器满意,即使它不使用太多带宽。

    【讨论】:

      猜你喜欢
      • 2016-10-28
      • 2011-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-12
      • 2012-08-01
      • 2015-05-12
      • 2013-03-29
      相关资源
      最近更新 更多