Я пытаюсь удалить некоторый контент с веб-сайта, но приведенный ниже код не работает (не отображается никакого вывода).
вот код
$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
для замены сущностей, но все равно ошибки остаются.