2015-11-05 81 views
0

我使用簡單DOM解析器(PHP)來提取的美元價格: http://www.lanacion.com.ar/dolar-tarjeta-t50462網頁抓取提取美元的價格

<div class="numero floatFix"> 
    <p class="peso">$</p> 
    <p id="dTarjeta" class="valor x35"> 
     12,920 
    </p> 

但我得到的followng字符「 - 」代替「 12,290" 。我使用的代碼是:

$url_to_traverse = 'http://www.lanacion.com.ar/dolar-tarjeta-t50462'; 
$html = file_get_html($url_to_traverse); 
foreach($html->find('#dTarjeta') as $element) 
{ 
    var_dump($element->text()); 
} 

我在做什麼錯了? 希望有一個解決方案因爲我已經嘗試了很多庫...

+0

爲什麼刮?嘗試使用貨幣匯率的網絡服務,例如https://openexchangerates.org/ – lxg

回答

1

這是因爲#dTarjeta中的數據是在頁面加載後使用javascript進行的。即當file_get_html函數讀取URL,thsi是什麼樣子:

<p id="dTarjeta" class="valor x35">-</p> 

很明顯的是,在頁面加載後,在#dTarjeta文本使用JavaScript使用Ajax調用什麼改變相似(未檢查它)。

所以你的問題的答案是,你正在得到正確的輸出,因爲PHP無法使用客戶端javascript呈現頁面,並且它只呈現服務器首先發送的內容。

我建議你使用Phantomjs或simialr技術來刮這些頁面。查看源代碼:

通過驗證此http://www.lanacion.com.ar/dolar-tarjeta-t50462

另外,你可以用這個計算器的問題:Scrape web pages in real time with Node.js 參考。

Additonally,如果你喜歡使用其他來源得到的貨幣值,可以考慮使用

  1. http://fixer.io/ - 免費JSON的API。
  2. https://openexchangerates.org/ - 同
  3. 雅虎財經的API

此鏈接將幫助您使用PHP來處理JSON的API。 Get data from JSON file with PHP

+0

Thankx you very much!。我正在考慮尋找那些提供api的網站,而不是去刮...不會使用節點,但我打算考慮使用...你知道一個好的託管站點嗎?...我不支持; vaa我應該問... Thankx – AgusDesign

+0

對不起,我遲到了。你需要什麼託管網站?如果您想要實時價格數據,則有幾個API。我將相應地編輯答案。如果答案有幫助,請將其標記爲正確的答案:-)以便其他人節省時間會更容易。 – Sak90