Php XPath表达式在Chrome'中工作;s的开发人员工具功能,不在我的代码中
我最近开始探索创建网络爬虫。我选择使用PHP没有什么特别的原因。在DOMXpath中的DOMDocument中获得了我的turducken的一个cURL实例。我很高兴地发现使用XPath非常简单 不幸的是,尽管当我在Chrome的开发者工具功能中使用它时,它的记录完美无瑕,但它并不总是在我的代码中返回结果。同样的表达式在前一种环境中有效,而在后一种环境中无效 举个具体的例子,我无法在YouTube页面上的视频标题下找到我的爪子 我的问题是:为什么XPath表达式会在Chrome的开发者工具功能中返回一个结果,而在我的代码中只得到一个零?以下是我的资料和我尝试过的几个表达方式:Php XPath表达式在Chrome'中工作;s的开发人员工具功能,不在我的代码中,php,google-chrome,xpath,Php,Google Chrome,Xpath,我最近开始探索创建网络爬虫。我选择使用PHP没有什么特别的原因。在DOMXpath中的DOMDocument中获得了我的turducken的一个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>");
}
?>
您已经走上了正确的轨道(无论如何,您都正确地瞄准了元素)。用(字符串)
键入:
首先,谢谢!虽然它告诉我我不能得到非对象的节点值。我去掉了“->nodeValue”并做了var_dump()的事情,它说字符串没有长度。也许是鬼魂。:)@萨凡纳我添加了一个完整的代码和一个演示检查的修订啊,太棒了!非常感谢你帮我解决这个问题。
$contents = file_get_contents("https://www.youtube.com/watch?v=SIPGkrlM3R8");
$dom = new DOMDocument();
@$dom->loadHTML($contents);
$xpath = new DOMXpath($dom);
$results = trim((string) $xpath->query("//span[@id='eow-title']")->item(0)->nodeValue);
echo $results; // Scraping Websites with PHP using DOMXpath and DOMDocument Part 2: Building an XPath Class