Найти тему
10,1 тыс подписчиков

🔥 Применение эффективного асинхронного web-парсинга при работе с Bigdata


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

Рассмотрим принцип работы парсинга. Данный процесс происходит в несколько этапов:

1. Отправка HTTP-запроса на сервер.
2. Поиск необходимых данных.
3. Трансформация полученных данных.

При отправке HTTP-запроса на сервер у нас есть два варианта:

• отправить запрос и ждать, пока сервер даст ответ (синхронный запрос);
• отправить запрос и продолжить работу. Когда данные будут получены, программа вызовет функцию обработчик события (асинхронный запрос).

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

Основные проблемы парсинга

Парсинг, как и любая технология, сталкивается с рядом проблем. Перечислим наиболее актуальные:

• блокировка доступа к данным: использование CAPTCHA, блокирование IP-адресов и другое;
• скорость выполнения: большой объем данных требует много ресурсов и времени;
• сложность обработки ошибок: ошибки соединения, ошибки синтаксиса и другие;
• работа с динамическим контентом: необходимо разрабатывать специальные инструменты для анализа сайтов, использующих технологии ajax и javascript.

Реализация парсера на основе Beautiful Soup. Обзор возможностей.

Beautiful Soup — это библиотека Python для извлечения данных из файлов форматов HTML и XML. Beautiful Soup (или BS4) использует DOM-модель (Document Object Model) для трансформации и извлечения данных.

Основными возможностями BS4 являются:

• поиск элементов на странице по тегу, классу, id и другим атрибутам;
• извлечение текста и атрибутов элементов;
• навигация по дереву элементов страницы;
• манипуляции с HTML-кодом, такие как добавление, удаление или изменение элементов.

Для извлечения данных из HTML-кода необходимо использовать конструктор BeautifulSoup(), который принимает два аргумента: разметку (HTML-код) и анализатор (необходим для обработки HTML-кода). BS4 поддерживает различные библиотеки для синтаксического анализа, включая стандартные html.parser, а также более быстрые, такие как lxml и html5lib. В нашем случае будем использовать lxml. Также, для отправки запросов на сайт воспользуемся библиотекой requests.

Реализация кода на базе Beautiful Soup
Для начала установим и импортируем библиотеки.
# установка
pip install beautifulsoup4
pip install requests
pip install lxml
# импорт
from bs4 import BeautifulSoup
import requests


2 минуты