Эффективное извлечение веб-контента

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

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

Так что, если вы хотите узнать больше о парсинге веб-страниц и о том, как создать свою собственную версию на Python, пристегнитесь!

Что такое веб-скрапинг?

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

Прежде чем перейти к пошаговому руководству по созданию собственного парсера на Python, давайте посмотрим, как вы можете его использовать.

Почему полезен парсинг веб-страниц?

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

  • Сбор адресов электронной почты: компаниям, которые используют информационные бюллетени и электронный маркетинг для продвижения себя, необходимо как можно больше адресов, чтобы охватить свою целевую аудиторию. Вы можете использовать веб-скребок для загрузки полезной контактной информации с веб-сайтов в интересующей вас области. Hunter.io - удобный инструмент, который делает именно это.
  • Оптимизация ценообразования: вы можете просмотреть, сколько ваши конкуренты взимают за продукт или услугу, и легко следить за изменениями рынка. Даже если вы просто хотите что-то купить, инструменты извлечения данных помогут вам найти лучшее предложение.
  • Исследования: сбор отчетов и статистики имеет решающее значение для выполнения качественных исследовательских проектов. С веб-скребком вы тратите меньше времени, копируя вручную большие объемы данных самостоятельно.
  • Социальные сети. Анализ веб-сайтов социальных сетей может помочь вам определить текущие тенденции и увидеть, какие методы помогут вам и вашему бизнесу выделиться среди других. Это также отличный способ отслеживать, что люди думают и говорят о вашем бренде.
  • Тестирование: вы не можете точно знать, что может обрабатывать ваш собственный веб-сайт или как он взаимодействует с пользователями, без тестирования. Используя инструмент для очистки веб-страниц, вы можете отправить большой объем запросов, чтобы узнать, может ли сайт их обработать, или использовать прокси из другого места для проверки времени ответа.

Зачем использовать Python?

Python - популярный язык программирования, потому что он прост в использовании и изучении, а также является хорошей практикой для новичков. Вот лишь некоторые из преимуществ, которые делают Python отличным вариантом:

  • Легко читаемый синтаксис: Python имеет чистый синтаксис, который часто называют «исполняемым псевдокодом». Он особенно удобочитаем благодаря углублениям, используемым для обозначения блоков.
  • Простота использования: для обозначения блока не нужны точки с запятой (;) или фигурные скобки ({}). Опять же, отступы делают код менее беспорядочным и более читабельным.
  • Сообщество: сообщество Python - это одна большая семья, и она растет с каждым днем. Если вы застряли с кодом, вы всегда можете попросить о помощи. Вероятно, вы не первый программист, столкнувшийся с данной проблемой.
  • Богатые коллекции библиотек: Python имеет множество полезных библиотек, таких как Selenium, BeautifulSoup и pandas, которые мы будем использовать позже для парсинга веб-страниц.
  • Динамически типизированный: это означает, что тип переменной определяется только во время выполнения, что позволяет нам сэкономить драгоценное время.
  • Меньше написания: много кода не обязательно означает хороший код. В Python небольшие фрагменты кода могут делать довольно много работы! Следовательно, вы экономите время даже при написании кода.

Создайте свой собственный парсер

Теперь вы знаете, почему веб-парсеры и Python - это круто. Далее мы рассмотрим шаги по созданию нашего парсера.

1. Выберите страницу, которую хотите очистить

В этом примере мы соскребем Footshop на предмет хороших моделей кроссовок и их цен. Затем мы сохраним данные в формате CSV для дальнейшего использования. Мы хотим знать подробности о моделях кроссовок Nike на этом веб-сайте, поэтому URL-адрес, который мы будем использовать для нашего скребка, - https://www.footshop.eu/en/2311-nike-men-s-shoes.

2. Проверьте код веб-сайта

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

Появится окно «Инспектор браузера»:

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

3. Найдите данные, которые хотите извлечь.

Данные, которые мы хотим извлечь, вложены в выделенный тег <div>. Нам нужно название товара и его цена. Открыв тег <div>, на экране появится гораздо больше тегов.

Обратите внимание на то, что у каждого тега есть «класс». В нашем случае, чтобы получить название каждого продукта, нам нужно извлечь информацию, находящуюся в теге <h4> с классом Product_name_3eWGG.

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

4. Подготовьте рабочее пространство

Для начала вам необходимо скачать и установить Python.

Вы можете использовать любую IDE, которая вам подходит, но я рекомендую использовать PyCharm, потому что он работает как шарм!

После создания нового проекта вам потребуются следующие библиотеки:

  • Селен: используется для веб-тестирования и автоматизации работы браузера.
  • BeautifulSoup: используется для анализа документов HTML и XML.
  • pandas: используется для обработки и анализа данных. Вы можете извлекать и хранить данные в желаемом формате.

Вы можете установить их, открыв терминал в своем проекте и используя эту командную строку:

python -m pip install selenium pandas beautifulsoup4

5. Напишите код

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

from selenium import webdriver 
from bs4 import BeautifulSoup
import pandas as pd

Теперь нам нужно настроить веб-драйвер для использования браузера Chrome, задав путь chromedriver. Не имеет значения, где находится chromedriver, если путь правильный. Не забудьте указать имя исполняемого файла в конце, а не только его местонахождение!

driver = webdriver.Chrome("/your/path/here/chromedriver")

Объявите переменные и установите URL-адрес веб-сайта, который вы хотите очистить:

models = []
prices = []
driver.get('https://www.footshop.eu/en/2311-nike-men-s-shoes')

Почти сделано!

Нам нужно извлечь необходимую информацию с веб-сайта, который находится во вложенных тегах <div>. Найдите теги с соответствующими именами классов и сохраните данные в переменных, объявленных выше:

6. Запустите код

Чтобы запустить код, используйте эту команду (по сути вы говорите Python запустить .py файл, в котором вы написали код):

python main.py

7. Сохраните извлеченные данные

Вы извлекли данные, но что вы собираетесь с ними делать? Одно из решений - сохранить его в предпочтительном формате для дальнейшего анализа. В этом примере мы сохраним его в формате CSV (значения, разделенные запятыми), так как его легко импортировать:

df = pd.DataFrame({'Product Name': models, 'Price': prices})
df.to_csv('sneakers.csv', index=False, encoding='utf-8')

Если мы повторно запустим код, будет создан файл с именем sneakers.csv. Если вы получаете сообщение об ошибке «Не удалось прочитать дескриптор из соединения узла», не нужно паниковать. Это просто безобидное предупреждение.

И… готово!

Надеюсь, эта статья помогла вам понять основы парсинга веб-страниц с помощью Python.

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

Но это намного быстрее, чем делать это вручную, особенно если вы хотите очистить несколько похожих страниц. Например, если мы хотим проверить обувь Adidas в следующий раз, нам нужно изменить всего несколько строк кода.

Если вы хотите очистить данные в массовом порядке, вы можете найти более продвинутые инструменты. Для начала ознакомьтесь с возможностями API парсинга веб-страниц. WebScraping API написал руководство по выбору API, которое также включает некоторые рекомендации.

Удачного кодирования и очистки!