我们将每晚抓取数千个网站来更新客户数据,我们正在决定使用哪种语言进行抓取。
我们没有被任何平台或语言所束缚,我只是在追求效率。如果我必须学习一种新语言以使我的服务器运行良好,那很好。
哪种语言/平台能为我们提供每美元最高的抓取效率?真的,我正在寻找高容量刮削的真实体验。这将是关于最大化CPU /内存/带宽。
答案 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)
比较一个简单的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问题,并提供专门用于处理每个站点之间细微差别的工具,以及用于规范化数据的后刮除工具,以及用于保持数据最新的调度。