Goood day。
我有link
如果我在吹风机中打开链接,我会看到窗口
我想获取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 :(得分: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方法传递表单数据。但要做到这一点,你需要发送正确的代码。