В этом посте я опишу, как написать простейший сборщик Поисковых Результатов Google, используя API Google для поисковых результатов.
Для простоты будем использовать язык PHP. Выбор PHP для сбора хорош тем, что в дальнейшем написанные сборщики можно использовать практически на всех системах. Написанные на PHP сборщики - простые, легко модифицируемые и самое главное масштабируемые: написав и запустив сбор с одной машины, легко перенести код на другую машину или образовать сетку из нескольких машин, которая будет выполнять те же задачи в несколько потоков.
Теперь, основа для нашего сборщика готова. Следующий код выполнит сбор одного запроса и запишет результаты его работы в текстовый файл в заданном нам формате. После выполнения этого кода мы получим текстовый файл и лог.
Условно разделим это на несколько частей :
- Запрос Google API и получение с него данных
- Сохранение результатов
- Запуск сборщика на выполнение
1. Запрос Google API.
Для этого читаем документацию и находим что нужно запрашивать данные по адресу http://ajax.googleapis.com/ajax/services/search/web со следующими основными параметрами :
- - v=1.0 - версия API
- - q=запрос - запрос по которому надо получить данные
На сайте гугла приведен ПХП пример. Я слегка модифицировал его для того чтобы использовать массово и получилось следующее : т.е запрашиваем через CURL страницу с заданным ответом, проверяем правильность результата и если все сходится возвращаем это в ответе функции. Если же в процессе получения произошли ошибки, то ждем заданное время и повторяем снова. Хочу обратить сразу внимание на два важных момента : логи и паузы.
Паузы: Так как мы работаем массово, то многие бесплатные API ограничивают нас по скорости, и если слишком часто идут запросы с одной машины, то сервис выдает бан на некоторое время. В дальнейшем я опишу как обходить это ограничение используя различные анонимайзеры. А пока просто скажу что грамотно подобранные паузы, позволяют использовать API с максимальной эффективностью. И нужно делать их всегда настраиваемыми, чтобы с минимальными усилиями реагировать на дальнейшие изменения в политике сервиса. Кстати к слову в платных API этих ограничений нет, но за каждый запрос в таком случаем будет нужно уплатить определенную сумму денег.
Логи: В процессе работы бывает что иногда происходит все не так как вы запланировали. И чтобы разобраться в этом нужно чтобы сборщик описывал где у него возникла проблема и также где все прошло так как надо. Т.е все данные получаемые извне надо проверять и записывать в лог файлы (одновременно можно и выдавать в окно отладки). В дальнейшем если по какой-то причине сборщик прекратит собирать так как вы запланировали, вам будет проще найти и быстро подправить это место. Ну а также время когда прошла или не прошла нужная нам операция тоже хорошо логировать.
2. Сохранение Поисковых результатов в Файл
После получения результатов следует определится в каком формате вам лучше всего записать разобранные данные. В этом примере для простоты я буду записывать ее в текстовый файл, один поисковый результат будет представлен одной строкой файла в следующем формате :
Запрос | Номер Результата | Видимый Урл | Заголовок | Содержимое
И функция примет следующий вид : т.е принятые результаты мы формируем в строку. Затем убираем лишние символы перевода строк и добавляем построчно в файл. Кроме того возвращаем сколько запросов нами было добавлено в файл. Обращу внимание что текстовый формат наиболее удобен для дальнейшей с ним работы, если вы пока точно не знаете как вам удобнее потом будет эти данные использовать.
Теперь, основа для нашего сборщика готова. Следующий код выполнит сбор одного запроса и запишет результаты его работы в текстовый файл в заданном нам формате. После выполнения этого кода мы получим текстовый файл и лог.
Выводы :
Подставляя каждый раз новый запрос, мы будем обновлять наш файл новыми поисковыми результатами. Как видим работа с Web API на основе API Google для поисковых результатов не представляет сложности. На других языках это сделать также просто, прочитав документацию и используя приведенный в ней пример. В следующем посте я расскажу как это поставить на поток, чтобы сформировав один раз список поисковых запросов, результат которых нам надо получить и запустив скрипт на выполнение, делать другие задачи.
Материалы :
Весь исходный код по этой статье можно скачать здесь. Руководство "Как запустить этот и другие PHP скрипты с этого сайта" всегда можно найти здесь.


Комментариев нет:
Отправить комментарий