Пишем простейший сборщик, использующий Google API на PHP. (Запрос и Сохранение)

запрос Google API

запрос Google API

В этом посте я опишу, как написать простейший сборщик Поисковых Результатов Google, используя API Google для поисковых результатов.

Для простоты будем использовать язык PHP.  Выбор PHP для сбора хорош тем, что в дальнейшем написанные сборщики можно использовать практически на всех системах. Написанные на PHP сборщики — простые, легко модифицируемые и самое главное масштабируемые:  написав и запустив сбор с одной машины, легко перенести код на другую машину или образовать сетку из нескольких машин, которая будет выполнять те же задачи в несколько потоков.

Условно разделим это на несколько частей  :

  1. Запрос Google API и получение с него данных
  2. Сохранение результатов
  3. Запуск сборщика на выполнение

1.  Запрос Google API.

Для этого читаем документацию и находим что нужно запрашивать данные по адресу http://ajax.googleapis.com/ajax/services/search/web со следующими основными параметрами :

  • — v=1.0 — версия API
  • q=запрос — запрос по которому надо получить данные

На сайте гугла  приведен ПХП пример. Я слегка модифицировал его для того чтобы использовать массово и получилось следующее :  т.е запрашиваем через CURL страницу с заданным ответом, проверяем правильность результата и если все сходится возвращаем это в ответе функции. Если же в процессе получения произошли ошибки, то ждем заданное время и повторяем снова. Хочу обратить сразу внимание на два важных момента : логи и паузы.

Паузы:  Так как мы работаем массово, то многие бесплатные API ограничивают нас по скорости, и если слишком часто идут запросы с одной машины, то сервис выдает бан на некоторое время. В дальнейшем я опишу как обходить это ограничение используя различные анонимайзеры. А пока просто скажу что грамотно подобранные паузы, позволяют использовать API с максимальной эффективностью. И нужно делать их всегда настраиваемыми, чтобы с минимальными усилиями реагировать на дальнейшие изменения в политике сервиса. Кстати к слову в платных API этих ограничений нет, но за каждый запрос в таком случаем будет нужно уплатить определенную сумму денег.

Логи:  В процессе работы бывает что иногда происходит все не так как вы запланировали. И чтобы разобраться в этом нужно чтобы сборщик описывал где у него возникла проблема и также где все прошло так как надо. Т.е все данные получаемые извне надо проверять и записывать в лог файлы (одновременно можно и выдавать в окно отладки). В дальнейшем если по какой-то причине сборщик прекратит собирать так как вы запланировали, вам будет проще найти и быстро подправить это место.  Ну а также время когда прошла или не прошла нужная нам операция тоже хорошо логировать.

2. Сохранение Поисковых результатов в Файл

После получения результатов следует определится в каком формате вам лучше всего записать разобранные данные. В этом примере для простоты я буду записывать ее в текстовый файл, один поисковый результат будет представлен одной строкой файла в следующем формате :

Запрос | Номер Результата | Видимый Урл | Заголовок | Содержимое 

И функция примет следующий вид : т.е принятые результаты мы формируем в строку. Затем убираем лишние символы перевода строк и добавляем построчно в файл. Кроме того возвращаем сколько запросов нами было добавлено в файл. Обращу внимание что текстовый формат наиболее удобен для дальнейшей с ним работы, если вы пока точно не знаете как вам удобнее потом будет эти данные использовать.

Теперь, основа для нашего сборщика готова.  Следующий код выполнит сбор одного запроса и запишет результаты его работы в текстовый файл в заданном нам формате. После выполнения этого кода мы получим текстовый файл и лог.

результаты запроса Google API

результаты запроса Google API

Выводы : 

Подставляя каждый раз новый запрос, мы будем обновлять наш файл новыми поисковыми результатами. Как видим работа с Web API на основе API Google для поисковых результатов не представляет сложности. На других языках это сделать также просто, прочитав документацию и используя приведенный в ней пример. В следующем посте я расскажу как это поставить на поток, чтобы сформировав один раз список поисковых запросов, результат которых нам надо получить и запустив скрипт на выполнение, делать другие задачи.

Материалы : 

Весь исходный код по этой статье можно скачать здесь. Руководство «Как запустить этот и другие PHP скрипты с этого сайта» всегда можно найти здесь.

Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Одноклассники
Опубликовать в Яндекс
Опубликовано в PHP, Использование Web API, Обучение Метки: , , ,
Декабрь 2021
Пн Вт Ср Чт Пт Сб Вс
« Фев    
 12345
6789101112
13141516171819
20212223242526
2728293031