[英]php xpath returning entire html
为什么这会返回整个html文档,而不只是返回包含“ H + R + E”的节点中的值?
html示例:
<tr class="linesAlt1">
<td>04:10 PM</td><td style="width:53%;">3055 Over</td><td style="width:22%;">3 H+R+E +146</td>
</tr>
我只想得到"3 H+R+E +146"
。 但这会转储所有html。
<?php
$url = 'http://www.pinnaclesports.com/ContestCategory/MLB+Propositions/July+13~2C~+2012/Lines.aspx';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
$html = curl_exec($ch);
curl_close($ch);
$doc = new DOMDocument();
$doc->loadHTML($html);
$xpath = new DOMXPath($doc);
foreach ($xpath->query("//table/tr/td[contains(., 'H+R+E')]") as $textNode){
echo $textNode->nodeValue."\n";
}
?>
默认情况下, curl_exec
打印到STDOUT
,这就是您所看到的。 换句话说,您不会在$html
捕获任何输出(或在该循环中打印任何内容)。 首先,您需要重定向输出:
curl_setopt($ch, CURLOPT_FILE, fopen('php://stdout', 'w'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_URL, $url);
$html = curl_exec($ch);
解决此问题后,我查看了所提供URL的来源,但在其中的任何位置都找不到该文本H+R+E
它只有一个表,但没有该内容。 您正在寻找不存在的东西。
为了证明它现在可以正确地检索文件,请尝试以下完整示例:
$url = 'http://www.pinnaclesports.com/ContestCategory/MLB+Propositions/July+13~2C~+2012/Lines.aspx';
$ch = curl_init();
curl_setopt($ch, CURLOPT_FILE, fopen('php://stdout', 'w'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_URL, $url);
$html = curl_exec($ch);
curl_close($ch);
$doc = new DOMDocument();
$doc->loadHTML($html);
$xpath = new DOMXPath($doc);
foreach ($xpath->query("//table") as $table){
echo "[" . $table->nodeValue . "\n";
}
...这将产生以下输出(省略loadHTML
警告):
[ Client ID: Password:
有关设置cURL选项的更多信息:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.