Веб-скрапинг с помощью Python и Selenium: пошаговое руководство
Сегодня важность информации достигла своего пика, и умение извлекать и анализировать данные с интернет-ресурсов стало очень важным и востребованным. В данной статье мы рассмотрим основы веб-скрапинга с применением Python и Selenium, а также обсудим, как технология Capmonster Cloud помогает преодолевать сложности с разными капчами. Вы узнаете, как эти инструменты могут значительно улучшить Вашу способность получать и обрабатывать данные из интернета, открывая новые горизонты для исследований, анализа данных и автоматизации процессов.
Что такое веб-скрапинг? Этапы работы
Веб-скрапинг (web scraping) – это процесс извлечения данных с веб-страниц. Этот процесс обычно включает использование программы или скриптов, получающих представленную на веб-сайтах информацию, которая может быть использована в различных областях и для различных целей. Например, для сравнения цен и услуг конкурентов, анализа потребительских предпочтений, мониторинга разных новостей и событий и многого другого.
Этапы работы веб-скрапинга включают:
- Определение целей: на первом этапе необходимо понять, какую информацию нужно извлечь и на каких на веб-ресурсах.
- Анализ структуры целевой веб-страницы: изучение HTML-кода страниц, чтобы понять, где и как хранится нужная информация. Поиск и определение элементов, таких, как теги, ID, классы и др.
- Разработка скрипта для получения данных: написание кода (например, на языке Python с использованием библиотеки для автоматизации действий в браузере Selenium), который будет посещать веб-страницы, извлекать нужные данные и сохранять их в структурированном виде.
- Обработка данных: извлечённые данные часто требуют преобразования для дальнейшего использования. Это может включать удаление дубликатов, исправление форматов, фильтрацию ненужных данных и т.д.
- Сохранение данных: сохранение извлечённых и обработанных данных в удобном формате, например, в виде CSV, JSON, базы данных и т.д.
Также важно следить за изменениями на целевом сайте, чтобы своевременно обновлять скрипт в случае необходимости.
Работа с Python и Selenium
Почему Python и Selenium удобны для веб-скрапинга?
Язык программирования Python и библиотеку Selenium часто используют для веб-скрапинга по следующим причинам:
- Лёгкость использования: Python прост в использовании и имеет множество библиотек для веб-скрапинга.
- Эмуляция действий, доступ к динамическому контенту: с помощью Selenium можно автоматизировать действия пользователя в веб-браузере, включая эмуляцию прокрутки страницы и нажатия кнопок, необходимых для загрузки данных.
- Антикраулеры: на некоторых сайтах применяются специальные защитные механизмы, и использование эмуляции действий реального пользователя помогает справиться с этими механизмами.
- Широкая поддержка: большое сообщество и множество ресурсов облегчают работу с этими инструментами.
Установка и импорт инструментов
Давайте рассмотрим пример простого скрипта для веб-скрапинга. Для примера возьмём страницу https://webscraper.io/test-sites/e-commerce/allinone/product/123, на которой будем искать в карточке товара цену на 128 GB объёма HDD.
- Если на Вашем компьютере ещё не установлен Python, перейдите на официальный сайт Python и скачайте подходящую версию для Вашей операционной системы (Windows, macOS, Linux). В терминале удобной для вас среды разработки можете проверить версию Python следующей командой:
- Далее необходимо установить Selenium, выполнив команду:
- Создайте новый файл и импортируйте необходимые библиотеки:
- Также необходимо добавить в проект класс ‘By’, он понадобится нам для определения стратегий поиска элементов на веб-странице в Selenium:
Параметры драйвера Chrome
Опции ChromeDriver (ChromeOptions) нужны для настройки поведения и параметров запуска браузера Chrome при автоматизации с помощью Selenium. Вот некоторые из этих опций:
Полный список параметров можно посмотреть здесь.
- В нашем примере установлен режим инкогнито. Инициализируйте драйвер Chrome и перейдите на нужную страницу с карточкой товара:
Поиск HTML-элементов страницы
В Selenium поиск элементов на веб-странице осуществляется с помощью различных методов, предоставляемых классом By. Эти методы позволяют находить элементы по различным критериям, например, идентификатор элемента (ID), имя класса (class name), имя тега (tag name), имя атрибута (name), текст ссылки (link text)), XPath или CSS-селектор.
Пример поиска по ID:
По имени класса:
По имени тега:
По имени атрибута:
По тексту ссылки:
По CSS-селектору:
По XPath:
Если необходимо найти несколько элементов, вместо find_element используется метод find_elements.
- В нашем примере необходимо найти расположение элемента кнопки “128” и информации о цене:
Имитация действий пользователя
В Selenium имитация действий на веб-странице осуществляется с помощью методов, предоставляемых объектом WebElement. Эти методы позволяют взаимодействовать с элементами на странице так, как это делает пользователь: кликать, вводить текст и т.д.
Вот несколько таких методов:
- Вернёмся к нашему примеру. С помощью XPath осуществляется поиск нужной кнопки, после чего нужно сделать клик по ней и найти элемент с ценой:
- Теперь остаётся вывести цену товара с нужным объёмом HDD в консоль:
Итак, вот как выглядит полный код:
Всплывающие баннеры и окна
Очень часто на сайтах появляются различные баннеры и всплывающие окна, которые могут помешать выполнению скрипта. В таких случаях можно настроить параметры ChromeDriver таким образом, чтобы отключить эти элементы. Вот некоторые из таких параметров:
На сайте, который мы используем в нашем примере, при загрузке страницы появляется куки-баннер. Можно также попробовать убрать его другими способами, один из которых – использование отдельного скрипта, который блокирует такие уведомления. Для начала изучим этот элемент:
Теперь можем скрыть этот баннер, добавив его в наш скрипт:
Ещё одним из эффективных способов является использование Chrome расширений, которые автоматически принимают или блокируют все баннеры с куки. Эти расширения можно установить в браузере, а затем подключить их в ChromeOptions. Скачайте подходящее расширение в формате .crx. Используйте его в Вашем скрипте:
Этот подход избавит вас от необходимости вручную взаимодействовать с подобными элементами при загрузке страницы.
Решение капчи при веб-скрапинге
Часто при извлечении данных возникают препятствия в виде капчи, предназначенной для защиты от ботов. Для преодоления таких ограничений наиболее эффективны специализированные сервисы, распознающие различные виды капч. Одним из таких инструментов является CapMonster Cloud, который в кратчайшие сроки способен автоматически решать даже самые сложные капчи. Этот сервис предлагает как браузерные расширения (для Chrome, для Firefox), так и API-методы (с ними можете ознакомиться в документации), которые вы можете интегрировать в свой код для получения токенов и продолжения работы вашего скрипта.
Пример кода для автоматического решения капчи и веб-скрапинга
Этот скрипт решает капчу на странице, а затем извлекает заголовок этой же страницы и выводит в консоль:
Использование Python и Selenium для веб-скрапинга открывает множество возможностей для автоматизации сбора данных с веб-сайтов, а интеграция с Capmonster Cloud помогает легко решать капчи и значительно упрощает процесс сбора информации. Эти инструменты позволяют не только ускорить работу, но и обеспечить точность и надёжность получаемых данных. С их помощью вы можете собирать данные из самых разных источников, от интернет-магазинов до новостных сайтов, и использовать их для анализа, исследований или создания собственных проектов. И при всём этом необязательно иметь углублённые знания программирования, — современные технологии делают веб-скрапинг доступным даже для новичков. Так что, если для вас важны простота, максимальное удобство и экономия времени в работе с данными, Python, Selenium и Capmonster Cloud — отличное сочетание для достижения этой цели!
NB: Напоминаем, что продукт используется для автоматизации тестирования на ваших собственных сайтах и на сайтах, к которым у вас есть доступ на законных основаниях.