CoderCastrov logo
CoderCastrov
Эликсир

Неофициальное руководство по извлечению результатов поиска Google в 2021 году с помощью Elixir.

Неофициальное руководство по извлечению результатов поиска Google в 2021 году с помощью Elixir.
просмотров
2 мин чтение
#Эликсир

В одной из предыдущих статей мы обсудили, почему кто-то может захотеть извлекать данные из Интернета. Кроме того, я создал небольшую статью, в которой показано, как извлекать данные для агентства недвижимости; Теперь мы сделаем небольшой шаг в немного другом направлении - наша новая цель - Google.

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

Примечание: Согласно файлу robots.txt, доступному на google.com, обычно не рекомендуется сканировать результаты поиска. Однако мы также видим, что есть некоторые исключения для некоторых ботов (например, Twitter и т. д.). Быстрый поиск по запросу "как сканировать Google" показывает десятки подобных учебников, но для других языков, так почему бы не показать один для Elixir?

Задача

В этом примере мы создадим веб-скрейпер, который будет извлекать:

Начало работы

Как обычно в таких случаях, мы начнем с создания нового проекта Crawly:

mix new google_serp --sup

Добавьте Crawly и Floki в файл mix:

defp deps() do
 [
   {:crawly, "~> 0.12.0"},
   {:floki, "~> 0.26.0"}
 ]
end

Создайте папку config и файл config.exs

Ориентирование

Как только все настроено, мы можем взглянуть на целевой веб-сайт, чтобы найти селекторы.

Давайте получим страницу с результатами поиска и посмотрим, как ее извлечь:

Интересная часть здесь заключается в том, что тело представлено в кодировке ISO-8859–1. Поэтому нам придется сначала преобразовать его в UTF8, чтобы было легче продолжить разбор, см. также обсуждение здесь. Мы будем использовать Codepagex для этой цели.

Теперь пришло время открыть страницу с помощью консоли Google Inspect (идеально с отключенным JS), чтобы начать поиск правильных селекторов.

Поиск CSS атрибута для извлечения блока с результатами поиска

Как видно из картинки выше, возможно получить доступ ко всем блокам с помощью **.ZINbbc **(также потребуется удалить первый элемент этого списка, который не кажется относящимся к результатам поиска). Мы пришли к следующим селекторам:

Теперь, наконец, пришло время преобразовать это в паука. Идеально было бы получить поисковый запрос в качестве начального параметра для паука, поэтому давайте это сделаем :).

Мы пришли к следующему коду:

Вы можете клонировать получившийся проект здесь.

Вывод

В этой статье мы показали, как извлекать данные из результатов поиска Google. Это немного неполный пример, так как мы пока не следуем постраничной навигации. Если эта статья наберет 200 лайков, я создам вторую статью, объясняющую, как переходить на все страницы результатов поиска Google.

ОБНОВЛЕНИЕ

Поскольку мы собрали необходимые 200 лайков, я готовлю вторую часть статьи! Пожалуйста, оставайтесь на связи!