Веб-скрейпинг

Веб-скрейпинг (или скрепинг, или скрапинг← ) — это технология получения веб-данных путём извлечения их со страниц веб-ресурсов. Веб-скрейпинг может быть сделан вручную пользователем компьютера, однако термин обычно относится к автоматизированным процессам, реализованным с помощью кода, который выполняет GET-запросы на целевой сайт.

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

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

История 
История веб-скрейпинга начинается со времени, когда появился Интернет.

 В июне 1993 года был создан первый веб-робот World Wide Web Wanderer, который предназначался только для измерения размеров всемирной паутины.
 В декабре 1993 года появилась первая поисковая система WWW, которая опиралась на работу веб-робота — . Она уже могла отслеживать информацию, индексировать её и выполнять поиск по словам, ранжируя ссылки.
 В 1994 году была запущена первая полнотекстовая поисковая система .
 В 2000 году появились первые Web API и API Crawler. В этом году Salesforce и eBay запустили собственный API, благодаря которому программисты получили доступ к некоторым общедоступным данным. С тех пор многие веб-сайты предлагают Web API, что значительно упростило веб-скрейпинг.
 В 2004 году была запущена библиотека , предназначенная для Python. Поскольку не все веб-сайты предлагают API, программисты искали новое решение для веб-скрейпинга в таких случаях. Таким решением стала библиотека Beautiful Soup, которая определяет структуру сайта, используя синтаксический анализ, что помогает анализировать и получать содержимое HTML-страниц. Beautiful Soup считается самой сложной и продвинутой библиотекой для веб-скрейпинга.
 В 2018 году Интернет представлял собой более чем 1,8 миллиарда веб-сайтов. Именно веб-скрейпинг сделал недавно появившуюся Всемирную сеть доступной для поиска, а затем быстро растущий Интернет стал более удобным и доступным.

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

«Копипаст» вручную

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

Обращение к прокси-сервису 
Если сайт представляет собой html- или xml-документ и к нему разрешены кросс-доменные запросы, то можно получить содержимое документа с помощью запроса к одному из имеющихся в Интернете прокси-сервису.

Сопоставление текстовых шаблонов

Простой, но мощный способ получения информации с веб-страниц. Может быть основан на команде UNIX grep (выполняет поиск в одном или нескольких файлах по шаблону) или на сопоставлении регулярных выражений языков программирования (например, Perl или Python).

Синтаксический анализ HTML

Многие веб-сайты состоят из большого числа страниц, генерируемых динамически из основного структурированного источника — базы данных. Данные одной и той же категории обычно кодируются в похожие страницы с помощью общего скрипта или шаблона. В интеллектуальном анализе данных программа, которая обнаруживает такие шаблоны в определённом источнике информации, извлекает его содержимое и переводит его в форму, называется оболочкой. Предполагается, что анализируемые страницы системы соответствуют общему шаблону и что их можно легко идентифицировать в терминах общей схемы URL. Кроме того, некоторые полуструктурированные языки запросов к данным, такие как XQuery и HTQL, могут использоваться для анализа HTML-страниц и извлечения и преобразования содержимого страниц.

Document Object Model (DOM)

DOM — программа с API для HTML- и XML-документов. Встраивая полноценный веб-браузер, такой как Internet Explorer или элемент управления браузера Mozilla, программы могут извлекать динамическое содержимое, создаваемое клиентскими сценариями. Скрейпинг DOM-дерева позволяет получить доступ к информации в отдельных её частях.

Вертикальная агрегация данных

Есть несколько компаний, которые разработали специальные онлайн-платформы, которые создают и контролируют множество ботов. Боты работают без прямого участия человека и при этом их взаимодействие с пользователями происходит без связи с целевым сайтом. Подготовка включает в себя создание базы знаний, благодаря которой возможна работа ботов. Боты осуществляют агрегацию данных по отдельным свойствам каждого ресурса в соответствии с заданными условиями для дальнейшего сопоставления и анализа полученных значений свойств. Надежность платформы измеряется качеством получаемой информации (обычно количеством полей) и её масштабируемостью (до сотен или тысяч сайтов). Эта масштабируемость в основном используется для преобразования данных, расположенных в конце длинного кода сайтов, которые обычные агрегаторы считают сложными или слишком трудоёмкими для сбора контента.

Распознавание семантических аннотаций

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

Анализаторы страниц

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

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

Применение 
Веб-скрейпинг стал важным инструментом для автоматизированного сбора информации в Интернете. Он является частью маркетинговых информационных систем (MIS) для формирования баз данных или банков данных, благодаря которым нужные сведения предоставляются в форме табличных отчетов. Технологии работы поисковых систем, агрегаторы контента также взаимосвязаны с программами веб-скрейпинга.

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

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

В основном веб-скрейперы решают следующие задачи:

 Поиск необходимой информации;
 Копирование данных из Интернета;
 Мониторинг обновлений на сайтах.

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

Программы и аналоги 
Программы веб-скрейпинга не рассчитаны на обычных пользователей, с ними работают программисты, которые в большинстве случаев пишут коды под конкретные задачи. В Интернете можно найти различные средства и инструменты для веб-скрейпинга: библиотеки, приложения, online-сервисы, облачные сервисы, сервисы типа DaaS, плагины к браузерам. Один из популярных средств скрейпинга Scrapy (это бесплатный фреймворк с открытым кодом). Среди коммерческих популярной является платформа Import.IO.

Существует разработки, например, Nokogiri, который создан специально для языка программирования Ruby, скрейперы, которые выполняют определённую задачу из множества возможных: Outwit Hub собирает текстовую информацию и распределяет по ячейкам. Новые формы веб-скрейпинга включают прослушивание каналов данных с веб-серверов. Например, JSON обычно используется в качестве транспортного механизма хранения данных между клиентом и веб-сервером.

Получение данных с сайтов при помощи доступа к API также эффективно. Такие компании, как Amazon AWS и Google Google (API Discovery service), предоставляют конечным пользователям бесплатные инструменты, сервисы и общедоступные данные для парсинга.

Способы защиты и обход блокировок 
Существуют методы для предотвращения сайтами веб-скрейпинга, такие как обнаружение и блокировка от обхода (просмотра) ботами своих страниц. В ответ на это существуют системы веб-скрейпинга, которые полагаются на использование методов анализа DOM, компьютерного зрения и обработки естественного языка для имитации просмотра человеком, чтобы обеспечить сбор содержимого веб-страницы для автономного анализа.

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

 Необычное поведение пользователя (например, сотни переходов на новую страницу сайта каждую секунду);
 Повторяющиеся безрезультатные действия (пользователь не будет выполнять одни и те же задачи раз за разом);
 Использование ссылок, которые содержатся только в коде веб-сайта и не видны обычным пользователям.

Способы блокировки:

 Запретить доступ на сайт с определённого IP-адреса (например, когда ботом пройдено более 100 страниц за сессию);
 Запретить идентификатор пользователя, являющийся с точки зрения администратора сайта злоумышленником, заходящим на сайт по аутентификации.

Чтобы обойти блокировку, программы веб-скрейпинга должны производить на сайте действия, максимально близкие к поведению пользователей. Поэтому следует периодически ротировать IP-адреса, изменять идентификатор пользовательского агента (User Agent) и настроить скорость обращений веб-скрейпера на оптимальную, а между обращениями — встроить случайные действия на сайте, которые не вызовут подозрения.

Юридические особенности 
Юридические аспекты веб-скрейпинга регулируются законодательством в области защиты персональных данных. В России регулирующим документом выступает Федеральный закон «О персональных данных» от 27 июля 2006 года № 152-ФЗ. В Евросоюзе действие скрейперов должно соответствовать требованию общего регламента защиты персональных данных (GDPR). Во Франции с апреля 2020 года действует отдельный регламентирующий документ, изданный национальной комиссией по информатизации и свободе (CNIL) ограничивающий сбор персональных данных из открытых источников.

См. также 
 Анализ данных
 Data mining
 Парсинг

Примечания

Литература 
 Китаев Е. Л., Скорнякова Р. Ю. StructScraper — Инструмент для динамического включения в контент веб-страницы семантических данных внешних веб-ресурсов // Научный сервис в сети Интернет. — 2019.
 Китаев Е. Л., Скорнякова Р. Ю. Скрейпинг «на лету» внешних веб-ресурсов, управляемый разметкой HTML страницы // Препринты ИПМ им. М. В. Келдыша. — 2019. — № 20. — DOI:10.20948/prepr-2019-20.
 Солощенко М. В., Карамова А. И. Реализация импорта данных из web-ресурсов // Современная математика и её приложения : Статья в сборнике трудов конференции. — Уфа, 2017.
 Тютярев А. А., Соломатин Д. И. Разработка фреймворка для создания веб-скрейперов // Вопросы науки. — 2016. — Т. 3, № 13.
 Adamuz P.L. Development of a generic test-bed for web scraping. Barcelona: European Education and Training Accreditation Center, 2015.
 Boeing, G.; Waddell, P. New Insights into Rental Housing Markets across the United States: Web Scraping and Analyzing Craigslist Rental Listings // Journal of Planning Education and Research. — 2016. — DOI:10.1177/0739456X16664789. — arXiv:1605.05397.
 Huan Liu, Fred Morstatter, Jiliang Tang, Reza Zafarani. The good, the bad, and the ugly: uncovering novel research opportunities in social media mining (англ.) // International Journal of Data Science and Analytics. — 2016-11. — Vol. 1, iss. 3-4. — ISSN 2364-4168 2364-415X, 2364-4168. — DOI:10.1007/s41060-016-0023-0.
 Geoff Boeing, Paul Waddell. New Insights into Rental Housing Markets across the United States: Web Scraping and Analyzing Craigslist Rental Listings (англ.) // Journal of Planning Education and Research. — 2017-12. — Vol. 37, iss. 4. — ISSN 1552-6577 0739-456X, 1552-6577. — DOI:10.1177/0739456X16664789.
 Rizqi Putri Nourma Budiarti, Nanang Widyatmoko, Mochamad Hariadi, Mauridhi Hery Purnomo.Web scraping for automated water quality monitoring system: A case study of PDAM Surabaya // 2016 International Seminar on Intelligent Technology and Its Applications (ISITIA). — Lombok, Indonesia: IEEE, 2016-07. — ISBN 978-1-5090-1709-6. — DOI:10.1109/ISITIA.2016.7828735.

Ссылки 
 Scrapy.org 
 Web scraping

Веб-разработка