Формирование запроса к Google/Яндекс и парсинг страницы выдачи PHP

224
28 июля 2017, 02:57

Есть массив строк, необходимо:

  1. Каждый элемент (строку) из массива отправить запросом в Google/Яндекс;
  2. Принять первую страницу выдачи;
  3. Разобрать ее и построить кусок Excel таблицы строка->Ссылки из выдачи.

Прошу подсказать действенные на данный момент способы выполнения 1 и 2 пунктов.

Заранее спасибо!

Answer 1

Отправка запроса в Google:

$qury = "Hello+world";
libxml_use_internal_errors(true);
$dom = new DomDocument;
$dom->loadHTMLFile("https://www.google.ru/search?q=".$qury);
$xpath = new DomXPath($dom);
$a = $xpath->query('//*[@id="ires"]/ol/div/h3/a/@href');
foreach ($a as $b){
    echo $b->textContent.PHP_EOL;
    break; 
} 

И выводит url ссылку поискового запроса:

/url?q=https://ru.wikipedia.org/wiki/Hello,_world!&sa=U&ved=0ahUKEwj8wdP5mqnVAhXKDxoKHbPFAX4QFgggMAM&usg=AFQjCNHtgemtiRcaS6eHWGUWJf0454xBRA

И в принципе можно достать саму ссылку из этой строки. Чтобы получить текст в выдачи от Google нужно изменить xpath запрос на //*[@id="ires"]/ol/div/h3/a

В случаи с Yandex все проще у них вроде как есть API: https://tech.yandex.ru/xml/

Там вообще есть подробная документация: https://tech.yandex.ru/xml/doc/dg/concepts/about-docpage/

И приведен пример запроса для поиска:

https://yandex.<домен>/search/xml ? 
user=<имя пользователя>
 & key=<API-ключ>
 & query=<текст поискового запроса>
 & [lr=<идентификатор страны/региона поиска>]
 & [l10n=<язык уведомлений>]
 & [sortby=<тип сортировки>]
 & [filter=<тип фильтрации>]
 & [maxpassages=<количество пассажей>]
 & [groupby=<параметры группировки результатов>]
 & [page=<номер страницы>]
 & [showmecaptcha=<yes>]

Описания параметров запроса: https://tech.yandex.ru/xml/doc/dg/concepts/get-request-docpage/

Но для использования данного API необходимо подтвердить паспортные данные.

READ ALSO
Как улучшить код по получению непустого элемента из массива?

Как улучшить код по получению непустого элемента из массива?

Вводные: есть некий массив с ключами, есть строка с несколькими ключами, один из которых подойдет к этому массиву (те

180
Ошибка получения данных из БД

Ошибка получения данных из БД

Функционал редактирования пользователя:

178
Как установить VisualEditor для mediawiki?

Как установить VisualEditor для mediawiki?

Используется Windows 7; Сервер - OpenSerwer; Apache - 242 x64; Php - 5

160