屏幕刮擦效率

时间:2011-05-05 16:05:24

标签: programming-languages performance screen-scraping

我们将每晚抓取数千个网站来更新客户数据,我们正在决定使用哪种语言进行抓取。

我们没有被任何平台或语言所束缚,我只是在追求效率。如果我必须学习一种新语言以使我的服务器运行良好,那很好。

哪种语言/平台能为我们提供每美元最高的抓取效率?真的,我正在寻找高容量刮削的真实体验。这将是关于最大化CPU /内存/带宽。

6 个答案:

答案 0 :(得分:4)

无论如何你都是IO绑定的,你的代码的性能根本不重要(除非你是一个非常糟糕的程序员......)

答案 1 :(得分:0)

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

效率方面,我会说它和其他方法一样快。我从来没有一次做过数千个网站,但我打赌它绝对可以完成任务。

答案 2 :(得分:0)

如果您了解C,则单流同步链接(称为“简单”方法)与libcURL的工作时间很短。多个异步流(称为“多”方法)还需要几个小时。

HTH

答案 3 :(得分:0)

对于网页抓取,我使用Python和lxml以及其他一些库:http://webscraping.com/blog

I / O是抓取时的主要瓶颈 - 要以合理的速度下载数据,您需要使用多个线程。

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

通常在抓取之后我需要重新调整不同的功能,而CPU变得很重要。

答案 4 :(得分:0)

我会推荐Web Scraping Language

比较一个简单的WSL查询:

GOTO example.com >> EXTRACT {'column1':td[0], 'column2': td[1]} IN table.spad

以以下示例为例:

import urllib2
from BeautifulSoup import BeautifulSoup

soup = BeautifulSoup(urllib2.urlopen('http://example.com').read())

for row in soup('table', {'class': 'spad'})[0].tbody('tr'):
    tds = row('td')
    print tds[0].string, tds[1].string

答案 5 :(得分:-1)

凭借数千个网站所需的数量,您可以通过查看商业套餐来获得更好的经济效益。它们消除了IO问题,并提供专门用于处理每个站点之间细微差别的工具,以及用于规范化数据的后刮除工具,以及用于保持数据最新的调度。