2010-12-15 221 views
0

我只是有幾個關於這個話題的問題。刮屏|網頁抓取

有人可以解釋的優點和使用下列語言來編寫刮刀的缺點:

的Java/Groovy的

的Perl

比索

的Python

我是也想知道在刮臉時可能會遇到什麼樣的問題,以及我應該如何處理它。例如,我遇到了片段身份,還沒有找到處理它的方法。 (我正在使用htmlunit)

只是爲那些對這個話題有所瞭解的人尋找一些指針。

回答

1

與編程語言本身相比,優點/缺點更多地與可用的框架相關。

  1. 如果需要報廢的JavaScript/AJAX網站是的HtmlUnit的最佳選擇之一,但如果你想直接用它,你需要在JVM(Java,Jython中,Clojure的,等等)語言運行。另一種選擇(對於javascript/ajax)是編寫Google Chrome插件(比Firefox更容易)或在應用程序中嵌入Web瀏覽器。第三種方法是使用自動化工具,如http://openqa.org/(例如:Selenium,W​​atir)。
  2. 如果您不需要javascript/ajax支持,我的經驗lxml是CPython下最好的抓取庫,主要是使用格式不正確的html。其他的html解析器在任何情況下都不能正常工作。
  3. 超越(1)和(2),另一個重要問題是如果你有一個並行爬行框架(如果你需要速度)。 (1),(2),(3)一起很難找到。
+0

謝謝你的詳細解答。你已經清除了我在周圍漂浮的幾個問題。你有沒有處理Selenium?我一直在考慮檢查它,但還沒有邁出這一步。我想在跳上之前我會做一些研究。 – StartingGroovy 2010-12-17 21:58:34

+0

不,我沒有使用硒,我用過Watir。在這種情況下看看有關利弊的過去問題:http://stackoverflow.com/questions/606550/watir-vs-selenium-vs-sahi我只需要補充一點,Watir對我來說似乎很慢。 – 2010-12-22 19:08:25

+0

非常感謝您的意見,這非常有幫助 – StartingGroovy 2010-12-22 20:42:19

1

我推薦從Python + lxml開始。 Mechanize有時也有幫助。

依賴於JavaScript或Cookie的網站很難刮取,但大多數都很簡單。

請確保在您的請求之間留出幾秒鐘以避免被阻止。

+0

謝謝,我沒有考慮過僅僅爲了刮目的考慮Python。我將不得不看看你的建議。也感謝關於在定時器上運行請求的提示。 – StartingGroovy 2010-12-17 21:54:11

1

考慮看TestPlan。它有它自己的高級語言,但你也可以用Java編寫模塊。它支持Selenium後端以及HTMLUnit。

如果你可以給你一個特定的問題(問題)與你的片段,那麼我也可以回答。

+0

我想我會接受你的建議(因爲我最熟悉Java/Groovy)。我也在考慮關注Selenium;我聽說過很多關於它的事情。至於我的具體問題:http://stackoverflow.com/questions/4320179/htmlunit-getbyxpath-returns-null我針對該問題的評論答案。我還沒有解決這個具體問題。我不知道如何處理與HTMLUnit – StartingGroovy 2010-12-17 21:55:56

+0

片段標識符只是想知道如果你有一個時刻來看看我的問題? – StartingGroovy 2010-12-20 21:54:11