我知道一些similair问题已被问到,但我很喜欢卡在这里。我找不到任何好的教程来帮助我解决这个问题。但我想要做的应该是非常基本的。可以说,我要抢在Stackoverflow.com的H1“的常见问题”,使用Chrome得到的XPath我得到这个:回声Xpath与大教堂
//*[@id="h-top-questions"]
所以我的问题是;我现在如何回应这个?来自全国各地,我得到这个净使用的代码片段:
<?php
$curl = curl_init('http://stackoverflow.com/');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.224 Safari/534.10');
$html = curl_exec($curl);
curl_close($curl);
if (!$html) {
die("something's wrong!");
}
//var_dump(strlen($data));
$dom = new DOMDocument();
@$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$headerh1 = $xpath->query('//*[@id="h-top-questions"]');
foreach($headerh1 as $match) {
print_r($match);
}
?>
我以为这只是将输出<h1 id="h-top-questions">Top Questions</h1>
。但相反,我得到 DOMElement Object ( )
。
任何人都可以帮我吗?我正在努力学习这一点。
我想我知道了,我把'print_r($ match);'改为'echo $ match-> nodeValue。 “\ n” 个;'。现在它起作用了,那是你的意思吗? – Linkjuice57
是的,唯一的区别是您遍历节点来获取DOMNode而不是项目($ index)方法,但在这种情况下并不重要。 – erdeszt