2011-08-24 39 views
0

我想抓住從站點上的某些財務數據一樣http://www.fxstreet.com/rates-charts/currency-rates/搶網站內容,那不是在源代碼

到現在我使用liburl抓住源代碼和一些正則表達式搜索,獲得的數據,這是我後來存儲在一個文件中。

還有一點問題: 在瀏覽器中看到的頁面上,數據幾乎每秒都會更新一次。當我打開源代碼時,我正在查找的數據每兩分鐘更改一次。 所以我的程序只能獲得數據的時間分辨率要低得多。

我有兩個問題:

(我)這怎麼可能是一個源代碼,其在兩分鐘內仍然靜態產生變化,每一個第二表?什麼是機制? (ii)如何以第二次時間分辨率獲得數據,即如何讀出源代碼中未顯示的這種變化表。

在此先感謝, 大衛

回答

1

您可以使用網絡面板FireBug檢查所發出的HTTP請求(通常獲取的數據),而頁面打開。您引用的這個特定頁面似乎是將POST請求發送到http://ttpush.fxstreet.com/http_push/,然後接收並解析JSON響應。

+0

好吧,這似乎是我的問題(我)的答案 - 頁面使用JSON或隨你。那麼問題(ii)如何檢索數據?謝謝 – davidhigh

1

嘗試發送POST請求http://ttpush.fxstreet.com/http_push/connect,看看你會得到什麼

它會不斷加載新數據

編輯:

可以使用liburl或蟒蛇,它其實並不重要。在HTTP下,當您瀏覽網頁時,您會發送GET或POST請求。 進入網站,打開開發工具(Chrome)/ firebug(firefox插件),你會看到所有的數據加載後,有一個請求沒有關閉 - 它保持打開狀態。

當你有一個網站,你要不斷地獲取數據,你可以做到這一點的一些技巧:

  • 使單獨的請求(使用AJAX)每隔幾秒鐘 - 這將打開每個連接請求,並且如果您想要頻繁更新數據 - 這是浪費的
  • 使用長輪詢或服務器輪詢 - 使1請求獲取數據。它保持打開狀態,並在需要時將數據刷新到套接字(到您的瀏覽器)。 TCP連接保持打開狀態。當連接超時 - 您可以重新打開它。它通常比以上更有效 - 但連接保持開放。
  • 使用XMPP或其他一些協議(不是HTTP) - 主要用於聊天,就像我認爲的facebook/msn,可能是谷歌和其他一些協議。

您發佈的網站使用第二種方法 - 當它檢測到該頁面的POST請求時,它將保持連接打開並連續轉儲數據。 您需要做的是向該頁面發出POST請求,您需要查看哪些參數(如果有)需要發送。無論您如何提出請求,只要您發送正確的參數即可。

您需要用分隔符讀取響應 - 可能每次他們想要處理數據時,都會發送\ n或其他分隔符。

希望這會有所幫助。如果你看到你仍然無法繞過這個讓我知道,我會進入更多的技術細節

+0

謝謝,但你能給我多一點細節?我該怎麼發送POST請求,以及爲什麼要這個地址(它只包含一行)?它可以與liburl或python一起使用嗎?我可以期望得到什麼? – davidhigh