我正在尝试使用xpath从页面中获取文本,现在我一直收到错误,不知道为什么! - 请记住,我是一个非常新的PHP用户,这是我所承担的大学项目,并且它非常具有挑战性:P但它应该是。
继承代码,
<?php
$html = file_get_contents('http://www.amazon.co.uk/New-Apple-iPod-touch-Generation/dp/B0040GIZTI/ref=br_lf_m_1000333483_1_1_img?ie=UTF8&s=electronics&pf_rd_p=229345967&pf_rd_s=center-3&pf_rd_t=1401&pf_rd_i=1000333483&pf_rd_m=A3P5ROKL5A1OLE&pf_rd_r=1ZW9HJW2KN2C2MTRJH60');
$dom = new DOMDocument();
$dom->loadHTML($html);
$xpath = new DOMXpath($dom);
$in_stock = $xpath->query("/html/body/div[@id='divsinglecolumnminwidth']/form[@id='handleBuy']/table[3]/tbody/tr[3]/td/div/span");
?>
我收到以下错误...
警告:DOMDocument :: loadHTML() [domdocument.loadhtml]:意外结束 tag:head in Entity,line:2664 in C:\ XAMPP \ htdocs中\刮\ domxpath.php 第19行
大约一百次!
任何帮助真的很感激! ,它一定很容易修复:P
答案 0 :(得分:2)
只需在代码中放置此行以停止显示错误,当文档是HTML页面并且您不知道它是否是格式良好的XML文档时,这尤其有用。
libxml_use_internal_errors(true);
http://fr2.php.net/manual/fr/function.libxml-use-internal-errors.php
答案 1 :(得分:1)
也许试试这个:
//form[@id='handleBuy']/table[3]/tbody/tr[3]/td/div/span
答案 2 :(得分:1)
$xpath = new DOMXpath($dom);
$expr = "/html/body/div[@id='divsinglecolumnminwidth']/form[@id='handleBuy']/table[3]/tr[3]/td/div/span";
$nodes = $xpath->query($expr); // returns DOMNodeList object
// you can check length property i.e. $nodes->length
echo $nodes->item(0)->nodeValue; // get first DOMNode object and its value
此外,您还需要为suppressing errors添加stametent。我认为出于性能原因,最好使用绝对XPath表达式,但相对//形式[@id ='handleBuy'] / table [3] / tr [3] / td / div / span也可以使用,并且更有弹性