Web サイトから一部のコンテンツを破棄しようとしていますが、以下のコードが機能していません (出力が表示されません)。ここにコードがあります
$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