Эта статья про то как можно написать собственный парсер поисковой выдачи, бесплатно и за 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 загляни на их официальный блог. Он очень информативен.
Как написать парсер страниц с wildberries или любого интернет магазина с обходом блокировок при помощи прокси и их ротацией, используя Selenium и некоторые самолично сделанные инструменты. Всё это на примере …
Про то как написать парсер списка фильмов с кинопоиска на python. Что для этого тебе потребуется и поделюсь исходным кодом с файлами данного парсера на питоне. С возможностью собрать и …
Как написать простой парсер на python, на примере собора изображений с сайта. Данный парсер представляет из себя пример того, как парсить статические и динамические сайты. С исходным кодом и архивом …
Использованные термины
Отрисовка на стороне клиента(ОСК) ⟶ Это такой способ отрисовки при котором, всё содержание страницы, включая первую, происходит в браузере. Пользователь должен сначала загрузить весь JavaScript, и только после этого что-то сможет отрисоваться.
Javascript ⟶ Это высокоуровневый, интерпретируемый язык программирования, который используется в основном для разработки веб-приложений. Он был создан в 1995 году и изначально предназначался для добавления интерактивности и динамики на веб-страницы.
Скрипт ⟶ Это набор команд или инструкций, записанных в текстовом файле, который предназначен для автоматизации выполнения определённых задач или процессов. Скрипты могут использоваться в различных языках программирования и в различных контекстах.
Парсер ⟶ Это программа или компонент программного обеспечения, который анализирует текст или данные, разбивая их на составные части и преобразуя в удобный для обработки формат. Обычно парсеры используются для извлечения информации из структурированных данных, таких как HTML, XML, JSON или других форматов.
Релевантные вопросы
Какой инструмент для веб-скрапинга самый лучший?
Выбор инструмента для парсинга зависит от характера веб-сайта и его сложности. Пока инструмент может помочь вам получить данные быстро и гладко с приемлемой или нулевой стоимостью, вы можете выбрать инструмент, который вам нравится.
Как избежать блокировки при парсинге веб-сайта?
Многие веб-сайты заблокируют вас, если вы будете слишком много их парсить. Чтобы избежать отказа, вам следует сделать процесс парсинга более похожим на просмотр веб-сайта человеком. Например, добавление задержки между двумя запросами, использование прокси-серверов или применение различных шаблонов парсинга может помочь вам избежать блокировки.
В чем разница между веб-скрапингом и веб-сканированием?
Веб-скрейпинг и веб-краулинг — это два связанных понятия. Веб-скрейпинг, как мы уже упоминали выше, представляет собой процесс получения данных с веб-сайтов; веб-краулинг — это систематический просмотр Всемирной паутины, как правило, с целью индексации веб-сайтов.
Что такое ручной парсинг?
Это процесс извлечения данных из веб ресурсов или документов подразумевающий ручной, то есть исполненный человеком без помощи каких-либо вспомогательных скриптов или программ.
Можно ли парсить Instagram?
Если данные, которые ты собираешься собрать являются публичными и они доступны всем, то однозначно можно. Плюс Инста предоставляет специальный API для парсинга, поэтому проблем возникнуть не должно.
Что такое облачный парсер
Это услуга по сборе информации из различных источников и группировки их в различных форматах, которая проводится на облачных серверах поставщика данной услуги.
Как проводится парсинг
Всё зависит от того что парсить и чем парсить. Можно парсить документы и таблицы, а можно парсить сайты. При чём сайты парсить сложнее чем документы, ибо сайтов великое множество и у каждого своя архитектура, что сильно усложняет парсинг.
На чём лучше всего писать парсер
Единым и универсальным языком всех парсеров является python. Дело в том, что для любой информации, в какой бы то ни было форме и формате она не была представлена, существует своя библиотека. Хотя и есть альтернатив в виде JavaScrip, Ruby, Go, C++, PHP