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

Часто данные не преподносятся нам на блюдечке с голубой каемочкой, конечно, существуют витрины данных, озера данных или хранилища данных, все из которых имеют легкодоступные данные в удобном, структурированном формате, но эти инструменты взимают огромную цену за свои услуги. Если ваш проект не подкреплен ресурсами уровня предприятия, возможно, лучше всего использовать другие, неденежные альтернативы. Лучшим вариантом в этом случае будет сбор общедоступной информации в сети. Зачем? потому что это бесплатно, и если вам удастся найти нужные источники, это также может быть достаточно актуально. В этой статье мы поговорим о парсинге веб-страниц и о том, как его реализовать с помощью Selenium в Python. Содержимое будет пронизано фрагментами кода и примерами, так что начните думать, приступим!

Selenium — это платформа онлайн-тестирования с открытым исходным кодом, которая обеспечивает простой и удобный подход к автоматизации веб-взаимодействий. Первоначально он был разработан для автоматического тестирования веб-приложений, но быстро стал популярным для парсинга веб-страниц. Он помогает нам перемещаться по веб-сайтам и веб-приложениям, моделируя поведение пользователей, например нажатие кнопок, заполнение форм и навигацию по страницам. С Selenium можно исследовать безграничные возможности, обязательно ознакомьтесь с их документацией. Для целей этой статьи мы остановимся на очистке Интернета с помощью веб-драйвера.

Прежде чем мы начнем, убедитесь, что на вашем компьютере установлен Selenium, для этого используйте pip install selenium. Давайте рассмотрим пример HTML-страницы, как показано ниже:

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

Настройка вещей

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

Этот фрагмент кода, если он запущен с использованием python load.py, откроет окно в вашем браузере Edge и загрузит веб-сайт example.com. Это будет нашей отправной точкой в ​​выполнении различных операций над одним и тем же.

Поиск элементов на странице

Как вы, возможно, уже знаете, веб-сайт содержит множество тегов, некоторые из которых вложены друг в друга и придают веб-сайту структурированный вид. Если мы рассмотрим нашу страницу sample.html выше, она явно содержит все эти элементы. Это полностью зависит от наших требований, какой тег нам нужен и какую информацию мы хотим извлечь. Selenium предоставляет нам широкий набор инструментов, которые мы можем использовать для перемещения по HTML DOM и получения необходимых данных.

Более пристальный взгляд на код показывает, что для получения одного или всех необходимых элементов достаточно просто использовать find_element или find_elements. Кроме того, используя расширения By, такие как .ID, .CLASS_NAME, .TAG_NAME, мы можем легко перемещаться по структуре документа.

Обход вложенных элементов

Элементы внутри html-документа часто имеют вложенные структуры, то есть один элемент будет родительским для многих дочерних элементов. Если наша цель — пройти не по всем элементам, а только по элементам внутри конкретного родителя, мы можем использовать родительский объект для обхода дочерних элементов. Это станет ясно из следующего кода:

Здесь мы использовали объект parent_element для поиска дочерних элементов.

Получить контент из тегов

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

Взаимодействие с веб-страницей

Selenium позволяет нам не только получать информацию с веб-страницы, но и взаимодействовать с ней так, как это сделал бы любой человек. Это означает, что мы можем нажимать на кнопки, заполнять формы и менять страницы. Позвольте мне продемонстрировать, как это достигается с помощью Python:

Использование неявного и явного ожидания

Всякий раз, когда мы загружаем веб-сайт, для отображения всего содержимого страницы требуется некоторое время. Если мы запустим наш код Selenium во время загрузки элемента, мы можем не получить желаемого результата или что-то может пойти не так. Чтобы этого не произошло, в Selenium есть концепция ожидания. Это может быть неявно, т. е. драйвер неявно ожидает загрузки элемента, и если он не будет найден в течение какого-либо времени между установленной длительностью, он вернет ошибку, или явный, что означает, что программа будет удерживать выполнение в течение некоторого времени. цикл до тех пор, пока не будет выполнено явное условие. Это может быть полезно, когда мы хотим, чтобы указанный элемент присутствовал для продолжения выполнения. Следующий фрагмент кода демонстрирует использование ожиданий:

Лучшие практики

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

  1. Отметьте robots.txt

Проверьте файл robots.txt веб-сайта, чтобы узнать, разрешает или запрещает он парсинг веб-страниц. Всегда соблюдайте правила, установленные владельцем сайта.

2. Используйте ожидания и таймауты

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

3. Юридические и этические соображения

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

Заключение

Selenium — отличный инструмент для извлечения данных с веб-страниц. Он может взаимодействовать с веб-сайтами, нажимать на кнопки, заполнять формы и многое другое. Обязательно посетите другие онлайн-ресурсы, чтобы изучить и освоить эту библиотеку, а также улучшить свои навыки парсинга веб-страниц. Они наверняка принесут вам пользу в вашем путешествии, основанном на данных. Всего наилучшего в ваших следующих приключениях!

Я надеюсь, что вам понравилось читать эту статью. Для меня это означало бы МИР, если бы вы могли выразить свою признательность через аплодисменты, поделиться и следить за автор. Это помогает мне мотивировать донести до вас ценный контент.

П.С. Вы можете нажимать на кнопку хлопка столько раз, сколько захотите, количество будет увеличиваться!

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

Увидимся в следующий раз и спасибо за чтение!