我們將每天晚上抓取數千個網站來更新客戶端數據,並且我們正在決定我們想用哪種語言來進行抓取。屏幕抓取效率
我們沒有被鎖定到任何平臺或語言,我只是在尋找效率。如果我必須學習一門新的語言才能使我的服務器表現良好,那很好。
哪種語言/平臺會爲我們提供每美元最高的刮取效率?真的,我正在尋找大批量拼搶的現實世界體驗。它將關於最大化CPU /內存/帶寬。
我們將每天晚上抓取數千個網站來更新客戶端數據,並且我們正在決定我們想用哪種語言來進行抓取。屏幕抓取效率
我們沒有被鎖定到任何平臺或語言,我只是在尋找效率。如果我必須學習一門新的語言才能使我的服務器表現良好,那很好。
哪種語言/平臺會爲我們提供每美元最高的刮取效率?真的,我正在尋找大批量拼搶的現實世界體驗。它將關於最大化CPU /內存/帶寬。
您將IO反正約束,你的代碼的性能不會在所有問題(除非你是一個非常糟糕的程序員。)
這是一個很好的觀點。這就是說,哪種語言傾向於快速抓屏開發?也許我們應該在這種情況下考慮開發時間而不是服務器時間,這是我之前沒有考慮過的。 – Mikecito 2011-05-06 03:56:03
@Mike,更多的是關於圖書館而不是實際的語言。每種語言都有DOM庫。我傾向於C#,因爲這是我的主要語言,但每種語言都至少有一個好語言!有一點是,C#4有一些非常容易使用的並行操作,允許您一次輕鬆處理多個文件('Parallel.For')。 – Blindy 2011-05-06 13:19:30
那麼我們主要是一個C#/ Objective C商店,所以我很欣賞你的意見。我們會嘗試一下! – Mikecito 2011-05-06 19:50:35
使用Python和美麗的湯的組合是非常容易寫非常快速的Scree-scraping代碼。美麗的湯有一個學習曲線,但它是值得的。
效率方面,我認爲它和其他任何方法一樣快。我從來沒有做過一次成千上萬的網站,但我敢打賭,這完全取決於任務。
關於任何其他語言/平臺和關聯的HTML解析器,可以這麼說。 – Oded 2011-05-05 16:09:27
如果您知道C,單流同步鏈接(稱爲「簡單」方法)是短日內與libcURL的工作。多個異步流(稱爲「多」方法)還需要幾個小時。
HTH
對於Web刮我使用Python與LXML和其他幾個庫:http://webscraping.com/blog
I/O是主要瓶頸爬行時 - 在你需要使用多線程的好速度下載數據。
我緩存所有下載的HTML,因此內存使用率很低。
通常在爬行之後,我需要重新設置不同的功能,並且CPU變得重要。
中等規格機器上的任何現代語言都可以。 – Oded 2011-05-05 16:07:54
那麼如果你關心的唯一事情就是效率,那麼你會盡可能低的水平,但顯然在硬件成本和程序員時間成本方面存在權衡。 – hammar 2011-05-05 16:11:25
這是一個好點,當然沒有組裝。 :) – Mikecito 2011-05-05 16:29:42