2011-05-05 95 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變得重要。