如何从远程网址获取HTML?

时间:2013-07-11 06:36:20

标签: php

Goood day。

我有link

如果我在吹风机中打开链接,我会看到窗口 test

我想获取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格式?

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分: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方法传递表单数据。但要做到这一点,你需要发送正确的代码。