【发布时间】:2014-07-17 18:11:15
【问题描述】:
我最近开始探索创建网络爬虫。我选择使用 PHP 并没有什么特别的原因。在 DOMXpath 内的 DOMDocument 中得到了我的 cURL 实例。而且我很高兴地发现使用 XPath 非常简单。
不幸的是,尽管我在 Chrome 的开发者工具功能中使用它时它的记录完美无缺,但它并不总是在我的代码中返回结果。相同的表达式将适用于前一种环境,而不适用于后者。
举个具体的例子,我无法抓住 YouTube 页面上视频下方的标题。
我的问题:为什么 XPath 表达式会在 Chrome 的开发人员工具功能中返回结果,而在我的代码中只得到一个零?这是我的东西和我尝试过的几个表达方式:
<?php
$ch = curl_init("https://www.youtube.com/watch?v=SIPGkrlM3R8");
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
$curl = curl_exec($ch);
$dom = new DOMDocument();
@$dom->loadHTML($curl);
$xpath = new DOMXpath($dom);
$results = $xpath->query("//span[@id='eow-title']");
//$results = $xpath->query("/html/body/div[2]/div[3]/div/div[5]/div/div[1]/div/div[1]/div[2]/div[1]/h1/span");
foreach ($results as $result) {
print_r($result->nodeValue . "<br>");
}
?>
【问题讨论】:
标签: php google-chrome xpath