Получить тег заголовка со страницы HTML, используя XPath?
У меня есть две страницы, которые я пытаюсь извлечь тег заголовка с помощью запроса Xpath. Эта страница работает: http://www.hobbyfarms.com/farm-directory/category-home-and-barn-resources-1.aspx
На этой странице нет: http://cattletoday.com/links/Barns_and_Metal_Buildings/page-1.html?s=A
Вот мой код:
$dom = new DOMDocument();
@$dom->loadHTMLFile($href);
$xpath = new DOMXPath($dom);
$titleNode = $xpath->query("//title");
foreach ($titleNode as $n) {
$pageTitle = $n->nodeValue;
}
Я также попробовал это:
$xpath->query('//title')->item(0)->textContent
Но это не работает для одного URL либо.
Кто-нибудь видит, почему это происходит? И, надеюсь, есть решение.
2 ответа
Решение
Файл распакован, работает следующий скрипт:
$href = 'http://cattletoday.com/links/Barns_and_Metal_Buildings/page-1.html?s=A';
$dom = new DOMDocument();
$file = gzdecode(file_get_contents($href));
$dom->loadHTML($file);
$xpath = new DOMXPath($dom);
$titleNode = $xpath->query('//title');
var_dump($titleNode->item(0));
(обратите внимание на используемую функцию gzdecode)
На второй странице используется пространство имен XHTML, поэтому вы должны использовать XPath, квалифицированный для этого пространства имен:
$xpath->registerNamespace("xhtml", "http://www.w3.org/1999/xhtml");
$titleNode = $xpath->query("//xhtml:title|//title");