2013-07-11 166 views
0

好日子。如何從遠程URL獲取HTML?

我有這個link

如果我在blowser打開鏈接,我看到窗口 test

我想獲取HTML ID爲TarifValue元素

爲了這個,我使用代碼:

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL, 'http://www.russianpost.ru/autotarif/Autotarif.aspx?viewPost=26&countryCode=643&typePost=1&viewPostName=undefined&countryCodeName=%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B9%D1%81%D0%BA%D0%B0%D1%8F%20%D0%A4%D0%B5%D0%B4%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F&typePostName=undefined&weight=1100&value1=2650&postOfficeId=123456'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HEADER, 0); 

$output = curl_exec($ch); 

curl_close($ch); 

echo $output顯示下面的代碼:

<html> 
<head></head> 
<body onload="document.myform.submit();"> 
<form method="post" name="myform" style="visibility:hidden;"><input id="key" name="key" value="497947"> 
<input type="submit"> 
</form> 
</body> 
</html> 

請告訴我如何分辯獲取HTML當我需要?

+0

對不起,我不添加插入代碼,請查看我的答案,請在單詞之後,但'echo $ output顯示下一個代碼:' –

回答

0

你可以試試這個解析器http://simplehtmldom.sourceforge.net/。迄今爲止我發現的最好的之一。

$html = file_get_html("http://www.russianpost.ru/autotarif/Autotarif.aspx?viewPost=26&countryCode=643&typePost=1&viewPostName=undefined&countryCodeName=%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B9%D1%81%D0%BA%D0%B0%D1%8F%20%D0%A4%D0%B5%D0%B4%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F&typePostName=undefined&weight=1100&value1=2650&postOfficeId=123456"); 

echo $html->find("#TarifValue", 0).textContent; 
+0

一個例子也會很好,我認爲。 – DevZer0

+0

對不起,我不添加插入代碼,請再次看到我的答案後,請回復$輸出顯示下一個代碼: –

0

該頁面的內容用表單中的代碼動態加載。因此,要獲得HTML,您必須提交具有正確代碼的表單。

我跑以下代碼:

$dom = new DOMDocument(); 
@$dom->load("http://www.russianpost.ru/autotarif/Autotarif.aspx?viewPost=26&countryCode=643&typePost=1&viewPostName=undefined&countryCodeName=%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B9%D1%81%D0%BA%D0%B0%D1%8F%20%D0%A4%D0%B5%D0%B4%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F&typePostName=undefined&weight=1100&value1=2650&postOfficeId=123456"); 
echo $this->to_html($dom->saveHTML()); 

輸出爲:

<html> 
<head></head> 
<body onload="document.myform.submit();"><form method="post" name="myform" style="visibility:hidden;"> 
<input id="key" name="key" value="675356"><input type="submit"> 
</form></body> 
</html> 

它看起來像,每次用而產生的碼的安全措施。爲了得到你想要的HTML,你可以使用cURL以post方法傳遞表單數據。但要做到這一點,您需要發送正確的代碼。

+0

請參閱鏈接http://www.russianpost.ru/autotarif/Autotarif.aspx?viewPost=26&countryCode=643&typePost=1&viewPostName =未定義&countryCodeName =%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B9%D1%81%D0%BA%D0%B0%D1%8F%20%D0%A4% D0%B5%D0%B4%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F&typePostName = undefined&weight = 1100&value1 = 2650&postOfficeId = 123456 Please –

+0

抱歉,我不添加插入代碼,我的回答請再次請''但回聲$輸出顯示下一個代碼': –

+0

喜歡,我說我的更新的答案。您必須傳遞表單數據才能獲取HTML,但我現在不知道如何提交正確的代碼。 –