Получить тег заголовка со страницы 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");
Другие вопросы по тегам