2013-07-11 123 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,但我现在不知道如何提交正确的代码。 –