2011-07-07 61 views
0

我在玩Ruby + Hpricot並構建一個簡單的刮板。我能夠與其他網站一起工作,無任何問題。但是,如果一個頁面完全用JavaScript編寫,那麼可以被刮掉嗎? 但是,google搜索結果頁面現在似乎完全是基於JavaScript的,除了一些內部鏈接。 Ruby,Scrape頁面完全用JavaScript編寫

  • 頁面可以這樣寫不被常規工具,如機械化&刮角度來說,Hpricot(我的猜測是,他們不能)

  • 他們是工具/使用的寶石,可能可能會嘗試渲染頁面(如瀏覽器),然後收集數據?

謝謝!

編輯:感謝您的回覆。我意識到直接刮谷歌是不對的,有一個API的地方,可以使用。這個問題的核心是我想要發現的確實是,如果有一個頁面完全用JavaScript編寫的(包括文本和內容 - 可能會被模糊處理)。是否有一個gem會嘗試僅以文本呈現頁面然後獲取其文本內容?

+3

爲什麼你會試圖刮谷歌,而不是使用他們的API? (提示:谷歌搜索結果在沒有JS的情況下工作得很好,至少如果你使用的是基於文本的網絡瀏覽器。) –

+1

谷歌可能不喜歡你刮他們的網頁。您應該使用他們的API(並檢查他們在那裏有哪些服務條款) – Thilo

+0

@Chris:謝謝,我正在用lynx檢查他們用於常規文本結果頁面的URL。 @Thilo:我明白,我只是在學習,所以我可能只會用幾頁來工作。不要以爲他們會(關心)。 – DMin

回答

2

以下是關閉即時加載的鏈接。
http://www.google.com/webhp?hl=en&tab=ww&complete=0

  • 他們是工具/使用的寶石,可能大概嘗試呈現的頁面(如瀏覽器),然後收集數據?

如果需要,您可以使用PhantomJS(C++)或PyPhantomJS(Python)進行屏幕抓取。

PyPhantomJS也有一個非常好的插件系統,而C++沒有。

還有一個剛剛爲它發佈的圖書庫。
Google Groups post | GitHub address

注意:正如其他人所說的,Google不希望人們刮取搜索結果。我建議遵守他們的服務條款。

2

這是非常非常重要的,所以請仔細聽:

始終檢查的「robots.txt」,第一,不,如果它告訴你不刮!

如果你看一下http://www.google.com/robots.txt,你會清楚地看到這行:

Disallow: /search 

編輯(根據提問者的評論)

撇開對 'robots.txt' 的問題了那麼,無論如何,使用更簡單的網站你可能會更好。我建議使用一個不會經常更改的網站,以便您可以輕鬆地重現您的結果並驗證所有內容都按照您的預期工作。

1

你應該看看Google's TOS。刮掉他們的搜索結果是不允許的。使用他們的搜索API。

0

如果你刮谷歌,你絕對必須使用代理,至少100 +。否則,他們會很容易地禁止你的IP地址。