我有兴趣知道在一个非常一般的情况下(一个自制的业余网络爬虫)会有什么样的表现。更具体地说,一个爬虫程序可以处理多少个页面。
当我说自制酿造在所有意义上,2.4 say核心2处理器,java编写,50mbit网速,等等。
我们将非常感谢您在这方面分享的任何资源。
非常感谢,
卡洛斯
发布于 2010-09-13 22:36:37
首先,计算机的速度不会成为限制因素;至于连接,你应该人为地限制爬虫的速度--如果你开始攻击你的网站,大多数网站都会禁止你的IP地址。换句话说,不要抓取一个站点太快(对于99.99%的站点,每个请求的10+秒应该是可以的,但是低于这个数将自负风险)。
因此,虽然您可以在多个线程中抓取单个站点,但我建议每个线程抓取不同的站点(检查它是否也不是一个共享的IP地址);这样,您可以使您的连接饱和,从而降低从爬行站点被禁止访问的机会。
有些站点不希望您抓取站点的某些部分,您应该遵循一种常用的机制:robots.txt文件。阅读链接的网站并实现这一点。
还要注意,一些站点根本禁止任何自动爬行;根据站点的权限(您的权限可能也适用),违反这一点可能是非法的(您对您的脚本所做的事情负责,“机器人做的事情”甚至不是借口,更不用说辩解了)。
发布于 2010-09-13 22:37:22
根据我的经验,大多数网站都是做刮板的,网络下载一直是限制因素。您通常可以将页面的解析(或稍后解析的存储)穿梭到不同的线程中,所需时间少于下载下一个页面所需的时间。
所以,算出下载一个网页平均需要多长时间。乘以你下载的线程数,直到它填满你的连接的吞吐量,平均任何给定的web服务器的速度,数学是相当明显的。
发布于 2010-09-14 00:51:05
如果你的程序足够高效,你的互联网连接将是限制因素(正如Robert Harvey在他的回答中所说的那样)。
但是,通过使用家庭互联网连接进行此操作,您可能会滥用提供商的服务条款。他们将对此进行监控,并最终会注意到您是否经常超出他们的合理使用策略。
此外,如果他们使用透明代理,你可能会在达到他们的下载限制之前很久就敲打死他们的代理,所以要小心-确保你没有通过ISP的代理,透明或不透明。
ISP是为大多数用户设置的,以便通过一些大型流媒体操作(视频或其他下载)进行中等水平的浏览。大量的小请求,即使不占用太多带宽,也不会让他们的代理服务器满意。
https://stackoverflow.com/questions/3701313
复制相似问题