XPath -> Выбор элемента с атрибутом класса

0

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

Мне нужна помощь в определении XPath для исключения объявлений. Тег cite в объявлениях не содержит атрибут класса, а в органических результатах есть два разных значения класса. Мои попытки определить 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
}

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

Теги:
xpath
scraper

2 ответа

0

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

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

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

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

0

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

  • 0
    Это не возвращает никаких результатов для меня :(

Ещё вопросы

Сообщество Overcoder
Наверх
Меню