XPath — & gt; Выбор элемента с атрибутом класса

Я хочу получить все обычные результаты поиска от Google.

Мне нужна помощь в определении XPath, чтобы исключить рекламу. Тег цитирования в объявлениях не содержит атрибута класса, а обычные результаты имеют 2 разных значения класса. Мои попытки определить XPath не увенчались успехом. Страница результатов Google выглядит примерно так

Ad
<cite>example.com</cite>

Organic Result 1
<cite class="_Rm">example.com/page1.html</cite>

Organic Result 2
<cite class="_Rm bc">example.com > Breadcrumbs > Page2</cite>

Вот мой код:

$html = new DOMDocument();
@$html->loadHtmlFile('http://www.google.com/search?q=mortgage&num=100');
$xpath = new DOMXPath($html);
$nodes = $xpath->query('//cite');

foreach ($nodes as $n){
echo $n->nodeValue.'<br />'; // Show all links
}

Пожалуйста помоги

0

Решение

Пытаться //cite[@class='_Rm' or @class='_Rm bc'] Это выберет cite узлы с классом, который либо _Rm или же _RM bc,

0

Другие решения

Предполагая, что часть HTML, которую вы хотите получить, не генерируется клиентскими скриптами (обычно javascript), следующий простой XPath сделает эту работу:

$nodes = $xpath->query('//cite[@class]');

Выше XPath получает все <cite> теги, содержащие атрибут класса с любым значением.

В противном случае вам нужно найти путь запустить клиентские сценарии, чтобы полностью сгенерировать HTML-код до того, как вы примените вышеуказанный запрос XPath к HTML-коду.

0

По вопросам рекламы [email protected]