Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Сбор данных с интернета : Теория и Решения Пишем простейший сборщик (Запрос и Сохранение)


запрос 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

Выводы :

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

Материалы :

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


В избранное