УДК 004.43
ПРОЕКТИРОВАНИЕ ВЕБ-СКРАПЕРА ДЛЯ ПОЛУЧЕНИЯ ДАННЫХ С САЙТОВ КНИЖНЫХ ИЗДАТЕЛЬСТВ
В. В. Бастрикина Научный руководитель - А. Г. Зотин
Сибирский государственный университет науки и технологий имени академика М. Ф. Решетнева Российская Федерация, 660037, г. Красноярск, просп. им. газ. «Красноярский рабочий», 31
Е-mail: [email protected]
Описан процесс веб-скрапинга данных. Предложена структура веб-скрапера для реализации сбора данных с сайтов книжных издательств. Описана технологическая архитектура веб-скрапера.
Ключевые слова: веб-скрапинг, python, beautifulsoup, requests, SQLAlchemy.
DESIGNING WEB SCRAPER FOR OBTAINING DATA FROM SITES OF BOOK PUBLISHING HOUSES
V. V. Bastrikina Scientific Supervisor - A. G. Zotin
Reshetnev Siberian State University of Science and Technology 31, Krasnoyarsky Rabochy Av., Krasnoyarsk, 660037, Russian Federation E-mail: [email protected]
Described process of web data scrapping. Proposed structure of a web scrapper for the implementation of data collection from websites of book publishers. Described technological architecture of the web scrapper.
Keywords: web scraping, python, beautifulsoup, requests, SQLAlchemy.
С целью решения разнообразного рода задач на компьютере используются различные классы программ. Для обработки текстов применяются текстовые редакторы, для обработки изображений - графические редакторы, для хранения и обработки справочной информации, используются специализированные базы данных - информационно-справочные сервисы. Информационно-справочные сервисы нацелены по большей степени на сбор, хранение и получение по запросу пользователя формализованной информации экономического, технического или технологического характера. Непосредственно справочные сервисы решают все поставленные задачи по обеспечению заказчиков нормативной информацией [1].
За последние годы появилась тенденция развивать информационно-справочные сервисы по востребованным направлениям. Одним из таких направлений, который нуждается в развитии является книжная отрасль. Существует немалое количество Интернет-ресурсов, на которых содержится полная информация о книжных товарах и их стоимость. Так, сведения можно получать не только от издательств, но и от интернет-магазинов, таких как Labirint, OZON, Bookvoed и т. д. Но поиск этой информации очень трудоемкий. книжная отрасль. В связи с этим возникла проблема создания такого сервиса, который бы позволял не только выбирать книги по интересам, а также узнавать в реальном времени о стоимости книг в интернет-магазинах и получать актуальную информацию с сайтов издательств [2].
Автоматизированное получение информации из Интернета существует столько же, сколько сам Интернет. Невзирая на то что веб-скрапинг (web scraping) не считается новым термином, ранее данное направление было больше известно под названием анализ экранных или интерфейс-
Актуальные проблемы авиации и космонавтики - 2018. Том 2
ных данных (screen scraping), интеллектуальный анализ данных (data mining), получение веб-данных (web harvesting) [3].
Часто появляется необходимость собрать данные c веб-страниц и сохранить их в структурированном виде. Веб-скрапинг - это технология, позволяющая получать информацию без потребности открывать большое количество страниц и копировать с них данные. Инструменты веб-скрапинга разрабатываются так, чтобы для извлечения данных с веб-сайтов потребовалось минимум усилий. Эти инструменты позволяют вручную или автоматически извлекать новые или обновленные данные и сохранять их для последующего использования. Например, с помощью инструментов веб-скрапинга можно извлекать информацию с сайтов книжных издательств и интернет-магазинов, тем самым получать полную информацию о товаре [4].
В ходе проектирования веб-скрапера были поставлены следующие задачи. Их условно можно разделить на несколько этапов:
- получение html-страницы с сайтов издательств;
- рендеринг html-страницы;
- парсинг html-страниц в удобный для дальнейшего анализа формат;
- запись полученных данных в базу данных.
Общая архитектура веб-скрапера представлена на рисунке.
Vilinl-ei^Biiiii
---"1
Scíuúfu] Socp
4
*_^
I Данные
□ДОопаху ^—
I Лмньк
(-
SQIrAlehcmy
^_J
Зшрос
t--'Ч
БД
ъ_J
Технологическая архитектура веб-скрапера
Общая архитектура веб-скрапера функционирует следующим образом. Сервер подает запрос в отдельном потоке на сервер сайта издательств через прокси-сервера. Список адресов прокси-серверов задан в программе. Получаем html-страницы сайта издательств с помощью пакета для языка программирования Python под названием Requestium [5]. Пакет Requestium, который
состоит из Requests и Selenium. Пакет Requests используется для создания html-запросов. Selenium - это инструмент для автоматизированного управления браузерами [6].
С помощью библиотеки Beatiful Soup 4 происходит поиск необходимых данных на странице по правилам, заданным в коде скрапера. Beatiful Soup 4 - это наиболее популярная библиотека для парсинга html-страниц, написанная на языке программирования Python [7]. После поиска полученные данные записываются в словари. Словари используется для структурированной записи данных.
Следующим в работу вступает SQLAlchemy, с помощью которой записываются полученные данные в БД. SQLAlchemy - это программное обеспечение с открытым исходным кодом для работы с базами данных [8]. Оно реализует технологию программирования ORM (Object-Relational Mapping), которая связывает базы данных с концепциями объектно-ориентированных языков программирования. SQLAlchemy позволяет описывать структуры баз данных и способы взаимодействия с ними прямо на языке Python. SQLAlchemy реализована в виде пакета для Python под лицензией MIT, а значит, возможно ее использование в проприетарном ПО.
Предложенная структура позволит реализовать веб-скрапер для извлечения необходимой информации с сайтов издательств.
Библиографические ссылки
1. Web Scraping с Golang и goQuery [Электронный ресурс]. URL: https://tehnojam.pro/ development/ (дата обращения: 12.02.2018).
2. Митчелл Р. Скрапинг веб-сайтов с помощью Python. СПб: ДМК Пресс, 2016. 280 с.
3. DeveloperWorks [Электронный ресурс]. URL: https://www.ibm.com/developerworks/ (дата обращения: 30.01.2018).
4. Web scraping с Node.js [Электронный ресурс]. URL: https://lpgenerator.ru/blog//web-scraping-s-nodejs/ (дата обращения: 29.01.2018).
5. Test.Py.Pi [Электронный ресурс]. URL: https://testpypi/requestium (дата обращения: 12.02.2018).
6. Python-3 [Электронный ресурс]. URL: http://python-3.ru/selenium (дата обращения: 12.02.2018).
7. Wiki.Python [Электронный ресурс]. URL: http://wiki.python.su/BeautifulSoup (дата обращения: 12.02.2018).
8. Wiki.Python [Электронный ресурс]. URL: http://wiki.python.su/SQLAlchemy (дата обращения: 12.02.2018).
© Бастрикина В. В., 2018