我正在尝试从网站上删除一些内容,但下面的代码不起作用(不显示任何输出)。这是代码
$url="some url";
$otherHeaders=""; //here i am using some other headers like content-type,userAgent,etc
some curl to get the webpage
...
..
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$content=curl_exec($ch);curl_close($ch);
$page=new DOMDocument();
$xpath=new DOMXPath($page);
$content=getXHTML($content); //this is a tidy function to convert bad html to xhtml
$page->loadHTML($content); // its okay till here when i echo $page->saveHTML the page is displayed
$path1="//body/table[4]/tbody/tr[3]/td[4]";
$path2="//body/table[4]/tbody/tr[1]/td[4]";
$item1=$xpath->query($path1);
$item2=$xpath->query($path2);
echo $item1->length; //this shows zero
echo $item2->length; //this shows zero
foreach($item1 as $t)
echo $t->nodeValue; //doesnt show anything
foreach($item2 as $p)
echo $p->nodeValue; //doesnt show anything
我确信上面的xpath
代码有问题。是xpaths
正确的。我已经xpaths
用FirePath (a firefox addon)
. 我知道我在这里遗漏了一些非常愚蠢的东西,但我无法弄清楚。请帮忙。我已经检查了类似的代码来抓取链接Wikipedia
(肯定xpaths
是不同的),它工作得很好。所以我不明白为什么上面的代码不适用于其他代码URLs
。我正在清理HTML
内容,Tidy
所以我没有 xpath 没有获取 HTML 的问题吗?我检查了nodelist
后面 $item1=$xpath->query($path1)
的长度,0
这意味着出现问题,$xpath->query
因为xpaths
我检查过的都是正确的FirePath
我已经按照指出的那样修改了我的代码,并使用loadXML
了loadHTML
. 但这给了我错误,Entity 'nbsp' not defined in Entity
所以我使用了替换实体的libxml
选项LIBXML_NOENT
,但错误仍然存在。