Как написать парсер гугла используя официальный API
15.02.2025
15.02.2025
6 минут
175
0
0
0
0
Про что и для кого эта статья
Эта статья про то как можно написать собственный парсер поисковой выдачи, бесплатно и за 5 минут. Без использования таких наворотов как прокси или bs4. Никаких сторонних программ для обхода капчи и(или) имитаторов деятельности пользователя в браузере, т.е. Селениум, например.
Она предназначена для начинающих SEO-специалистов, которые немного шарят в программировании и понимают python-синтаксис, но у которых не очень много свободных денег.
И как же я собираюсь, парсить поисковую выдачу google? Всё просто, я подключусь к Google Search API, у которого есть бесплатный план в виде 100 запросов в сутки. Для владельца маленького сайта самый раз. Вот готовый проект парсера гугл поиска.
Создание ключа и id поисковой системы
Чтобы получить возможность пользоваться API от гугла, нам нужно получить ключ доступа и id поисковой системы. Для начала, создадим собственную поисковую систему. Переходя по адресу https://programmablesearchengine.google.com/controlpanel/all, нажми Добавить и заполни все поля формы.
Тебя перенаправит на следующую страницу. Теперь на этой странице ты можешь получить свой id.
Дальше заполни все поля и всё готово. Создадим API ключ. Перейдём в Credentials, либо по ссылке, либо по кнопке (。・∀・)ノ゙:
Создадим наконец API-ключ:
После всех этих шагов тебе удалось создать свой собственный API-ключ к собственной поисковой системе. Скопируй его и сохрани где-нибудь.
Пишем парсер
Базовая настройка и подготовка
У нас всё есть, осталось только написать парсер. Создадим виртуальное окружение, установим необходимые пакеты и создадим парочку директорий:
Для Windows/PowerShell
Для Linux/Bash
Установка pandas и openpyxl необязательны, ибо если не хочешь сохранять результаты парсинга в XLSX файлы, то и не надо. Я буду, ибо мне так удобнее. В директории data будут храниться наши временные JSON файлы и сами результаты, либо те же JSON, либо XLSX таблицы.
Конфигурационный файл
Так же мой парсер будет иметь конфигурационный файл - config.json, откуда он сможет узнать, как ему следует обрабатывать запросы. Вот содержание конфигурационного файла, скопируй и вставь:
Таково вот, общее описание каждого из ключа:
key - недавно созданный нами API-ключ
cx - id созданный в начале поисковой системы
save_to - позволяет определять как сохранять результат, допустимые значения это exel и json.
depth - сколько страниц поисковой выдачи спарсить; гугл позволяет получить максимум 10 страниц по 10 позиций каждая
title, description и url - то, что парсить
Скрипт
Данный скрипт разработан таким образом, чтобы принимать аргументы из командной строки. Первый это -q, сам запрос. Второй это путь до файла конфигурации -C. Сделал я это при помощи argparse модуля python. Весь его функционал реализуется в функции run():
В этой функции создаётся argparse объект, настраивается и после происходит обработка файла конфигурации. На самом дне этой функции идёт вызов serp_scrape_init и serp_page_scrape. Разберёмся с ними по порядку.
Работой с Google Search API выполняет первая функция serp_scrape_init. Хотя и работай это назвать сложно. Мы просто делаем запрос по вот этому URL:
Важно понимать, нам нужно пройти все возможный страницы которые отдаёт гугл. Для этого используются такие вот параметры в адресе, num и start. Первый отвечает за то, сколько сайтов возвращать при одном запросе (максимум 10). Второй параметр проходит все страницы с шагом в 10. Вообще есть куда больше параметров для запросов, со всеми ими можно ознакомиться здесь. По итогу, наша функция имеет следующий вид:
Как результат работы, функция создаёт JSON файлы, которые после будет обрабатываться serp_page_scrape. Собственно говоря, о ней.
Ни чего экстраординарного, она просто открывает ранее созданные JSON файлы и сохраняет то, что было указанно в файле конфигурации. И на этом всё. Теперь, мы по факту получили маленький гугл в консоли. Вот пример использования:
А вот полный код скрипта и файла main.py:
Заключение
Знаешь, я изначально планировал написать парсер на стеке BeautifulSoup4 + Selenium + Python. Но немного погуглив, нет я не нашёл официальный туториал от google, как создать легальный парсер поисковой выдачи. Мне выбивало сайты агенств и компаний, которые предлагают сделать то же самое только за деньги.
Нет, конечно. Если ты крупная компания и тебе нужно делать 1000 запросов в секунду, то Google Search API, может предоставить дополнительные лимиты за небольшую плату. Очень небольшую, в сравнении с "не названными" компаниями и сайтами. Вот такие вот дела. Если хочешь узнать больше об Google Search API загляни на их официальный блог. Он очень информативен.