Программирование

Как удалить данные с веб-сайта на основе JavaScript с помощью Python, Selenium и веб-драйвера Headless

Один метод веб-скрапинга, чтобы управлять ими всеми

Веб-скрапинг - это процесс автоматического сбора данных компьютерной программой с разных веб-сайтов. Есть много вариантов использования. Многие предприятия были созданы исключительно на основе Интернета.

Есть разные способы очистки любого веб-сайта с помощью Python. Использование библиотеки BeautifulSoup, Scrapy Framework и библиотеки Selenium с помощью автономного веб-браузера.

Используя BeautifulSoup или Scrapy Framework, мы можем легко отказаться от обычного веб-сайта, на котором сервер генерирует файлы HTML. Но если веб-сайт использует любые библиотеки JavaScript, такие как JQuery, ReactJs или Angular, для динамического создания данных HTML, тогда мы не можем просто использовать библиотеку BeautifulSoup или среду scrapy для удаления данных.

Для решения проблемы есть другое решение. Мы можем использовать инструмент для очистки веб-страниц Selenium с поддержкой Python.

Итак, в этом руководстве мы узнаем, что такое Selenium и как мы можем использовать его для очистки данных с веб-сайта на основе JavaScript. Мы будем удалять данные с популярного веб-сайта с помощью фреймворка Angular Js для создания внешний интерфейс.

Что такое селен

Если мы посетим официальный сайт https://www.selenium.dev/, там написано: Selenium автоматизирует браузеры. Вот и все! Изначально он был разработан для тестирования веб-сайтов. Но с его помощью мы также можем извлекать данные с веб-сайтов.

По сути, это библиотека, реализованная на многих языках. Но мы будем использовать версию Python. Вы можете увидеть библиотеку python, посетив https://pypi.org/project/selenium/.

Как использовать селен:

У Selenium нет собственного веб-браузера. Для запуска нам необходимо интегрировать его в другие веб-браузеры. Но мы будем использовать веб-браузер, который будет работать в фоновом режиме и управляется нашей библиотекой селена. И этот браузер известен как безголовый браузер.

Что такое Headless Browser

Безголовый браузер загружает веб-сайт в память, выполняет код JavaScript на странице, и все происходит в фоновом режиме. Графического рендеринга веб-сайта не будет. Многие веб-браузеры поддерживают безголовые функции. Но в нашей демонстрации мы будем использовать безголовый браузер Google Chrome.

Используя Selenium с автономным браузером, мы можем создать мощный код веб-парсера, который обрабатывает файлы cookie, заголовки, код JavaScript и т. Д. Давайте установим библиотеку Selenium в наш проект python, а также давайте установим автономный браузер.

Подготовка проекта

Шаг 1. В каталоге рабочего стола я создам каталог с именем selenium_project.

Шаг 2: В моем терминале Mac я войду в каталог и набираю pipenv install selenium, чтобы установить библиотеку.

Шаг 3. После установки введите pipenv shell, чтобы активировать виртуальную среду.

Шаг 4: Теперь зайдите на https://pypi.org/project/selenium/ и прокрутите немного вниз, чтобы увидеть ссылки для загрузки безголового браузера. Давайте нажмем на Chrome.

Шаг 5. После загрузки браузера без монитора, который обычно содержится в zip-файле, распакуйте и скопируйте исполняемый файл в каталог проекта python с именем selenium_project

Шаг 6: Теперь в терминале или в командной строке введите touch demo.py , чтобы создать файл с именем demo.py. Здесь мы напишем все наши скрипты Python.

Документы Python Selenium:

Кроме того, чтобы узнать, как использовать пакет selenium python, проверьте следующий URL-адрес https://selenium-python.readthedocs.io/getting-started.html. Если вы застряли или не знаете, как что-то использовать, вы можете зарегистрироваться здесь.

Отказ от ответственности: этот проект предназначен только для образовательных целей.

Целевой веб-сайт

Мы удалим цитаты с https://www.brainyquote.com/. Этот веб-сайт разработан с использованием фреймворка Angular JavaScript. Таким образом, веб-страницы интерфейса создаются динамически с использованием Angular. Если вы посетите веб-сайт, вы увидите на главной странице; вверху есть поле поиска.

Например, если вы напечатаете здесь что-то, слово «Нравится» и нажмете «Ввод», сайт перенаправит вас на новую страницу с кавычками, помеченными ключевым словом.

Мы хотим автоматизировать эту функцию сначала с помощью селена, а затем с помощью кода мы будем собирать данные.

Давайте код

Шаг 1:

В demo.py нам нужно импортировать некоторые модули и классы.

Шаг 2:

Давайте определим переменную url, чтобы указать целевой веб-сайт, и давайте определим другую переменную chrome_driver_path, чтобы упомянуть исполняемый файл веб-браузера без заголовка. Обратите внимание, что не используйте относительный URL. В этом случае используйте абсолютный путь или динамически сгенерированный абсолютный путь.

Шаг 3:

Давайте создадим экземпляр класса Options с именем chrome_options. И сделайте его обезглавленным, вызвав метод add_argument и передав параметр --headless.

Также создайте экземпляр класса webdriver.Chrome. Этот webdriver будет работать как веб-браузер.

Шаг 4:

Напишем следующий код. Если из терминала мы передадим какое-либо ключевое слово, search_query будет заменено им. В противном случае слово поискового запроса по умолчанию будет «life».

Шаг 5:

С помощью следующего кода мы загружаем веб-сайт, автоматизируем поведение, удаляем данные и печатаем в терминале. Я также написал несколько комментариев в коде, чтобы вы могли легко понять, как все работает.

Создан wait = WebDriverWait(driver, 10)объект. Видите ли, мы использовали строку номер 11 wait.until(presence_of_element_location((By.Id, "quotesList"))). Это означает, что страница результатов не загрузится полностью, что определяется наличием идентификатора «quotesList» в данных HTML. Также wait = WebDriverWait(driver, 10) 10 - это секунды, что означает, что через 10 секунд истечет время ожидания. Таким образом, сценарий остановится на строке номер 11, пока условие не будет выполнено. Когда HTML-данные страницы результатов полностью захвачены, остальная часть скрипта возобновляет обработку данных.

Исходный код на GithHub

Вот полный сценарий в одном файле

Чтобы запустить сценарий, откройте Терминал и введите:

python3 demo.py # it will search for the word -> life
python3 demo.py love # it will search for the word -> love
python demo.py # windows system

Видите ли, утилизированные данные поступают с веб-сайта и отображаются в терминале.

Заключение

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

Если вы хотите настроить таргетинг на веб-сайт и удалить данные, попробуйте найти шаблон. Если вы можете обнаружить закономерность, ее легко реализовать.

Ознакомьтесь с моими другими уроками по парсингу:





👨🏼‍💻 Если вам понравился этот пост, вы можете оставить до пятидесяти 👏👏👏 аплодисментов. Если у вас есть вопросы или мнения, дайте мне знать в комментариях.