Статья опубликована в рамках: CXLV Международной научно-практической конференции «Научное сообщество студентов: МЕЖДИСЦИПЛИНАРНЫЕ ИССЛЕДОВАНИЯ» (Россия, г. Новосибирск, 18 июля 2022 г.)
Наука: Информационные технологии
Скачать книгу(-и): Сборник статей конференции
дипломов
СРАВНИТЕЛЬНЫЙ АНАЛИЗ БИБЛИОТЕК ДЛЯ ПАРСИНГА НА PYTHON
COMPARATIVE ANALYSIS OF LIBRARIES FOR PARSING IN PYTHON
Bulat Hayrullin
Student, Kazan National Research Technical University named after V.I. A.N. Tupolev - KAI,
Russia, Kazan
Konstantin Lavrentiev
Student, Kazan National Research Technical University named after V.I. A.N. Tupolev - KAI,
Russia, Kazan
Gulshat Gaptullazyanova
scientific Supervisor, senior lecturer, Department of Automated Information Processing and Control Systems, Kazan National Research technical university. A.N. Tupolev - KAI,
Russia, Kazan
АННОТАЦИЯ
В статье приводится сравнительный анализ библиотек для парсинга на языке Python. Рассмотрены несколько различных библиотек, обозначены их функциональные стороны и возможности. Для каждой библиотеки выделены преимущества и недостатки, на основе которых проведен сравнительный анализ.
ABSTRACT
The article provides a comparative analysis of libraries for parsing in the Python language. Several different libraries are considered, their functional aspects and capabilities are indicated. For each library, the advantages and disadvantages are highlighted, on the basis of which a comparative analysis is carried out.
Ключевые слова: парсинг, Python, Scrapy, BeautifulSoup, Selenium, сравнительный анализ.
Keywords: parsing, Python, Scrapy, BeautifulSoup, Selenium, benchmarking.
ВВЕДЕНИЕ
На данный момент парсинг является важным инструментом для работы с сайтами с целью получения из них определенной информации. Парсинг представляет собой процесс получения информации в одном виде и представлении ее в другом, более удобном для разработчика или пользователя. На языке программирования Python есть большое количество библиотек для реализации процесса парсинга. Рассмотрим пару из самых популярных:
• BeautifulSoup;
• Selenium.
Далее идет обзор каждой из библиотек.
ОБЗОР БИБЛИОТЕК
Scrapy является достаточно мощным фреймворком для выполнения процесса парсинга веб-страниц. Он также имеет открытый исходный код. В официальной документации есть подробное описание всех его компонентов. Это полноценный инструмент для выполнения всех функций связанных с парсингом. Ниже представлена архитектура данного фреймворка с схемой потока данных.
Одним из особенностей является использование асинхронной сетевой структуры Twisted, что означает, что scrapy использует неблокирующий механизм при отправке запросов пользователям [1]. Однако минусом является то, что данный фреймворк не может воспроизвести JavaScript-код. То есть, при использовании на сайте AJAX-запросов, или страниц SPA, этот фреймворк не сможет получить данные.
Таким образом, данный фреймворк является достаточно быстрым и полным инструментом для парсинга веб-страниц, к его минусам можно отнести отсутствие обработки JavaScript-кода, довольно сложную структуру для понимания для старта в парсинге.
Одним из инструментов для парсинга является библиотека BeautifulSoup. Эта библиотека помогает программисту работать с файлами формата HTML и XML, предлагая удобный интерфейс для перемещения, поиска и управления деревом данных в файлах этих типов. Но данная библиотека не может самостоятельно выполнять запросы, поэтому её необходимо использовать в связке с библиотекой для выполнения запросов, например Requests. Также, после загрузки данных, ей требуется внешний анализатор. Для анализа HTML используются следующие парсеры: html.parser (встроенное средство языка Python), lxml, html5lib. На таблице 1 отображены плюсы и минусы каждого из этих парсеров [3].
Таблица 1.
Сравнение парсеров для работы с BeautifulSoup
Парсер |
Преимущества |
Недостатки |
html.parser |
Встроенное средство Приличное быстродействие Нестрогий |
Медленнее lxml Строже html5lib |
lxml |
Быстрый Нестрогий |
Внешняя зависимость языка С |
Html5lib |
Нестрогий Разбирает HTML также, как браузер Создаёт валидный HTML5 |
Медленный Внешняя зависимость языка Python |
Подводя итог для библиотеки BeautifulSoup, отметим все её преимущества и недостатки. К преимуществам относятся:
• Простота реализации;
• Понятная и полная документация (доступная также и на русском языке);
• Хорошая поддержка сообщества, помогающая на ранних этапах найти ошибки в реализации.
Из недостатков можно отметить:
• Необходимость использования вместе с сторонними инструментами;
• Медленный при обработке большого количества документов.
Далее рассмотрим библиотеку Selenium. Selenium – это прежде всего инструмент для автоматизации тестирования веб-приложений, который имеет достаточно простой синтаксис, поддерживает написание автотестов на нескольких языках программирования, таких как Java, Ruby, C#, Python, Kotlin и другие. Эта среда разработана для автоматизации действий в браузере. Она позволяет запускать браузеры в headless режиме, например такие как Chrome, Chromium, Firefox. Благодаря этому он поддерживает работу с JavaScript-кодом, что выделяет его на фоне других средств разработки. Также он может находить элементы в дереве данных HTML по различным меткам, например по имени, классу, по css селекторам, по xpath и другим [2].
Подводя итог, отметим плюсы и минусы Selenium как инструмента для парсинга веб-сайтов.
К плюсам относится:
• Возможность работы с основными концепциями JavaScript (DOM);
• Обработка запросов AJAX, PJAX;
• Относительная быстрота работы.
Минусами данного проекта являются:
• Отсутствие возможности использования прокси «из коробки».
ЗАКЛЮЧЕНИЕ
В качестве итогов работы, составим сравнительную таблицу между библиотеками (таблица 2). Воспользуемся только теми данными, что были упомянуты в ходе анализа библиотек.
Таблица 2.
Сравнительный анализ библиотек BeautifulSoup и Selenium
Параметр |
Scrapy |
BeautifulSoup |
Selenium |
Универсальность языка |
+ |
- |
+ |
Простота реализации |
+ |
+ |
- |
Высокая скорость работы |
+ |
- |
+ |
Самостоятельная обработка запросов |
+ |
- |
+ |
Обработка JS-кода |
- |
- |
+ |
Поддержка асинхронности |
- |
+ |
+ |
Список литературы:
- Twisted из первых рук / М. Задка [и др.] // пер. с анг. А. Н. Киселева. – М.: ДМК Пресс, 2020. – 338 с.
- Москаленко А.А., Лапонина О.Р., Сухомлин В.А. Разработка приложения веб-скрапинга с возможностями обхода блокировок // Современные информационные технологии и ИТ-образование — 2019. — Т. 15.
- Soup Documentation // Beautiful Soup 4.4.0 Documentation — [электронный ресурс] — Режим доступа. — URL: https://beautiful-soup-4.readthedocs.io/en/latest/ (дата обращения 22.06.2022)
дипломов
Оставить комментарий