Я хочу получить все обычные результаты поиска от 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
}
Пожалуйста помоги
Пытаться //cite[@class='_Rm' or @class='_Rm bc']
Это выберет cite
узлы с классом, который либо _Rm
или же _RM bc
,
Предполагая, что часть HTML, которую вы хотите получить, не генерируется клиентскими скриптами (обычно javascript), следующий простой XPath сделает эту работу:
$nodes = $xpath->query('//cite[@class]');
Выше XPath получает все <cite>
теги, содержащие атрибут класса с любым значением.
В противном случае вам нужно найти путь запустить клиентские сценарии, чтобы полностью сгенерировать HTML-код до того, как вы примените вышеуказанный запрос XPath к HTML-коду.