2011-05-05 120 views
3

我们将每天晚上抓取数千个网站来更新客户端数据,并且我们正在决定我们想用哪种语言来进行抓取。屏幕抓取效率

我们没有被锁定到任何平台或语言,我只是在寻找效率。如果我必须学习一门新的语言才能使我的服务器表现良好,那很好。

哪种语言/平台会为我们提供每美元最高的刮取效率?真的,我正在寻找大批量拼抢的现实世界体验。它将关于最大化CPU /内存/带宽。

+0

中等规格机器上的任何现代语言都可以。 – Oded 2011-05-05 16:07:54

+0

那么如果你关心的唯一事情就是效率,那么你会尽可能低的水平,但显然在硬件成本和程序员时间成本方面存在权衡。 – hammar 2011-05-05 16:11:25

+0

这是一个好点,当然没有组装。 :) – Mikecito 2011-05-05 16:29:42

回答

4

您将IO反正约束,你的代码的性能不会在所有问题(除非你是一个非常糟糕的程序员。)

+0

这是一个很好的观点。这就是说,哪种语言倾向于快速抓屏开发?也许我们应该在这种情况下考虑开发时间而不是服务器时间,这是我之前没有考虑过的。 – Mikecito 2011-05-06 03:56:03

+0

@Mike,更多的是关于图书馆而不是实际的语言。每种语言都有DOM库。我倾向于C#,因为这是我的主要语言,但每种语言都至少有一个好语言!有一点是,C#4有一些非常容易使用的并行操作,允许您一次轻松处理多个文件('Parallel.For')。 – Blindy 2011-05-06 13:19:30

+0

那么我们主要是一个C#/ Objective C商店,所以我很欣赏你的意见。我们会尝试一下! – Mikecito 2011-05-06 19:50:35

0

使用Python和美丽的汤的组合是非常容易写非常快速的Scree-scraping代码。美丽的汤有一个学习曲线,但它是值得的。

效率方面,我认为它和其他任何方法一样快。我从来没有做过一次成千上万的网站,但我敢打赌,这完全取决于任务。

+1

关于任何其他语言/平台和关联的HTML解析器,可以这么说。 – Oded 2011-05-05 16:09:27

0

如果您知道C,单流同步链接(称为“简单”方法)是短日内与libcURL的工作。多个异步流(称为“多”方法)还需要几个小时。

HTH

-1

随着体积数千个站点需要,可以通过经济看商业包装会更好。他们消除了IO问题,并且拥有专门用于处理每个站点之间细微差别的工具,以及用于规范化数据的后期抓取工具,以及调度以保持数据最新。

+0

你能提出什么证据? – SamB 2011-05-10 02:18:22

+0

我们目前正在使用一项服务为我们做到这一点,我们的每月账单很快将达到约500,000美元。因此,我们希望开始在内部进行。 – Mikecito 2011-05-10 16:44:23

0

对于Web刮我使用Python与LXML和其他几个库:http://webscraping.com/blog

I/O是主要瓶颈爬行时 - 在你需要使用多线程的好速度下载数据。

我缓存所有下载的HTML,因此内存使用率很低。

通常在爬行之后,我需要重新设置不同的功能,并且CPU变得重要。