用xpath抓取,给出错误

时间:2011-03-27 14:36:56

标签: php dom xpath

我正在尝试使用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

3 个答案:

答案 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也可以使用,并且更有弹性