2013-05-14 87 views
4

我試圖使用open-uri來獲取網站的html頁面。然而,問題在於網站需要幾秒鐘的時間才能正確加載正確的代碼。我現在所擁有的是:Ruby Open-URI with Dynamic Website

require 'open-uri' 

html = open('http://hiddencode.me/dribbbucket/embed.html?key=MY_API_KEY&bucket=56024-Glassboard&delay=5000') 
response = html.read 
puts response 

如果我現在運行這個權利,我得到:

<div id="slam-dunk"> 
    <div id="loading">Loading..</div> 
</div> 

不過,該網站需要正確地首先加載開幕前得到正確的響應。任何想法如何在ruby中做到這一點?如果ruby不是您的專業知識,我也可以使用另一種語言的解決方案!

+5

您需要一個無頭瀏覽器或可以執行JavaScript的煨。有很多選擇。 –

+1

您應該打開AJAX使用的網址。 – DmitryR

回答

3

作爲一個例子,我最近使用watir-webdriver來完成一個類似的任務。你可以在javascript執行後查詢DOM,並拉出任何你想要的東西。如果你希望它是無頭的,在我的情況下,我使用無頭的寶石。

如果你想堅持'open-uri',那麼你將不得不使用像httpfox這樣的東西來觀察哪個ajax請求javascript。你也可以用許多不同的工具來做到這一點。但是在你訪問這個url之前,你需要啓動httpfox。等到你看到你想要抓取的信息出現時,然後停止httpfox,並通過每個請求檢查每個響應與你正在抓取的東西相關的事情。一旦你確定了正確的請求,你就可以在open-uri中使用它。儘管是最簡單的,但是這種解決方案並不能保證,因爲Web應用程序在與服務器交互以及操作dom方面差異很大。

+0

謝謝!當我這樣做時,我確實最終使用watir來完成任務。 –