2015-09-23 49 views
0

我已經創建了一個php解析器,它必須提取span標籤中的價格,但是當我回顯$ html以便我可以看到頁面如何加載時,它向我展示了一個沒有內容的破碎頁面。相反,只有頁眉和頁腳加載,而不是內容。內容似乎通過JavaScript在外部加載,我的問題是我如何加載Dom的HTML頁面,以便JavaScript也加載?我需要讓整個內容加載,以便我可以獲得div和跨度。這是我的代碼:PHP DOM解析器打破頁面,無法加載頁面內容

<?php 

require_once('simple_html_dom.php'); 

$url = 'http://oldnavy.gap.com/browse/product.do?cid=99570&vid=1&pid=714649002'; 

$dom = new domDocument('1.0', 'UTF-8'); 
$html = file_get_html($url); 

echo $html; 

if(is_object($html)){ 

    foreach ($html->find('span#priceText') as $data){ 

     $raw_price = $data->innertext; 

     echo $raw_price; 


    } 
} 
?> 
+0

而不是做它的手動使用:simplehtmldom.sourceforge.net/類 – jewelhuq

+0

,但在我的代碼我已經創建一個Dom對象。或者,也許我不明白你的意思 –

+0

@jewelhuq你是什麼意思,而不是手動做? –

回答

0

Alt鍵的形式給出

鏈接你實際上是在尋找(他最小的表達)是這樣的:http://oldnavy.gap.com/browse/productData.do?pid=714649

現在加載使用curl,把價值到unknownShopperId餅乾,爆炸成一個數組,得到的價格,您需要:

<?php 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_VERBOSE, true); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_URL, "http://oldnavy.gap.com/browse/productData.do?pid=714649"); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Cookie: unknownShopperId=E853DA3B2607DDAA5F2FE13CE8D32ACF")); 

$result = curl_exec($ch); 
$explode = explode(',', $result); 

echo 'Original price: ' . $explode[92] . '<br/>' . 
'New price: ' . $explode[93] . '<br/>' . 
'Both prices: ' . $explode[13]; 

其結果將是:'$14.94'

從現在起,如果您需要另一個價格,你必須知道INTEM的pid

+0

哦,哇!謝謝!但是,您從哪裏獲得了Cookie的價值,這是否意味着Cookie的這一價值可能會在未來發生變化? –

+0

如果您的請求缺少AFAIK,您可以隨機化該值AFAIK,該網站將嘗試爲您設置該值,以及301響應,這將導致「curl」的空答案。固定值似乎一直工作,我改變它隨機請求,它仍然工作。 – Solrac

+0

非常感謝您的幫助!我還有一個問題,它可能很愚蠢。我沒有那麼多入門,但$ explode [92],92是原始價格在計算昏迷後的位置,我想知道是否有方法知道每個數據的位置,或者您必須總是嘗試數字如1,2,92,93等在猜測之前呢?是否有技術? –