Веб-скрейпингВеб-скрейпинг (или скрепинг, или скрапинг← англ. web scraping) — это технология получения веб-данных путём извлечения их со страниц веб-ресурсов[1]. Веб-скрейпинг может быть сделан вручную пользователем компьютера, однако термин обычно относится к автоматизированным процессам, реализованным с помощью кода, который выполняет GET-запросы на целевой сайт[2]. Веб-скрейпинг используется для синтаксического преобразования веб-страниц в более удобные для работы формы[3]. Веб-страницы создаются с использованием текстовых языков разметки (HTML и XHTML) и содержат множество полезных данных в коде. Однако большинство веб-ресурсов предназначено для конечных пользователей, а не для удобства автоматического использования, поэтому была разработана технология, которая «очищает» веб-контент. Загрузка и просмотр страницы — важнейшие составляющие технологии, они являются неотъемлемой частью выборки данных[4]. ИсторияИстория веб-скрейпинга начинается со времени, когда появился Интернет.
МетодыВеб-скрейпинг — это область с активными разработками, разделяющими амбициозную инициативу развития взаимодействия человека и компьютера, которая требует прорывов в обработке и понимании текста онлайн-страниц искусственным интеллектом. Современные решения для скрейпинга варьируются от специальных, требующих человеческих усилий, до полностью автоматизированных систем, которые способны преобразовывать целые веб-сайты в структурированную информацию в определённом формате. Идеально, когда сайт, данные которого нужно извлечь, предоставляет их через API с разрешенным кросс-доменным доступом[13]. В случае, когда дела не обстоят таким образом, можно обратиться к другим методам скрейпинга. «Копипаст» вручную Иногда даже самая лучшая технология веб-скрейпинга не может заменить ручную работу человека, когда пользователь копирует и вставляет текст. В некоторых случаях это единственное возможное решение, например, когда веб-сайты устанавливают блокировку от веб-скрейпинга и копирования текста. Обращение к прокси-сервисуЕсли сайт представляет собой html- или xml-документ и к нему разрешены кросс-доменные запросы, то можно получить содержимое документа с помощью запроса к одному из имеющихся в Интернете прокси-сервису[13]. Сопоставление текстовых шаблонов Простой, но мощный способ получения информации с веб-страниц. Может быть основан на команде UNIX grep (выполняет поиск в одном или нескольких файлах по шаблону[14]) или на сопоставлении регулярных выражений языков программирования (например, Perl или Python). Синтаксический анализ HTML Многие веб-сайты состоят из большого числа страниц, генерируемых динамически из основного структурированного источника — базы данных. Данные одной и той же категории обычно кодируются в похожие страницы с помощью общего скрипта или шаблона. В интеллектуальном анализе данных программа, которая обнаруживает такие шаблоны в определённом источнике информации, извлекает его содержимое и переводит его в форму, называется оболочкой. Предполагается, что анализируемые страницы системы соответствуют общему шаблону и что их можно легко идентифицировать в терминах общей схемы URL[15]. Кроме того, некоторые полуструктурированные языки запросов к данным, такие как XQuery и HTQL, могут использоваться для анализа HTML-страниц и извлечения и преобразования содержимого страниц. Document Object Model (DOM) DOM — программа с API для HTML- и XML-документов[16]. Встраивая полноценный веб-браузер, такой как Internet Explorer или элемент управления браузера Mozilla, программы могут извлекать динамическое содержимое, создаваемое клиентскими сценариями. Скрейпинг DOM-дерева позволяет получить доступ к информации в отдельных её частях[17]. Вертикальная агрегация данных Есть несколько компаний, которые разработали специальные онлайн-платформы, которые создают и контролируют множество ботов. Боты работают без прямого участия человека и при этом их взаимодействие с пользователями происходит без связи с целевым сайтом. Подготовка включает в себя создание базы знаний, благодаря которой возможна работа ботов. Боты осуществляют агрегацию данных по отдельным свойствам каждого ресурса в соответствии с заданными условиями для дальнейшего сопоставления и анализа полученных значений свойств[18]. Надежность платформы измеряется качеством получаемой информации (обычно количеством полей) и её масштабируемостью (до сотен или тысяч сайтов). Эта масштабируемость в основном используется для преобразования данных, расположенных в конце длинного кода сайтов, которые обычные агрегаторы считают сложными или слишком трудоёмкими для сбора контента. Распознавание семантических аннотаций Некоторые страницы могут содержать метаданные или семантическую разметку и аннотации, с помощью метода распознавания семантических аннотаций их можно извлекать из таких страниц[19]. Анализаторы страниц Ведутся разработки в области искусственного интеллекта, когда машинное зрение идентифицирует данные, интерпретирует их, как бы это делал человек, их извлекает[20]. Технология веб-скрейпинг удобна для трансмиссии данных веб-страниц в более удобные формы, однако, существуют также методы парсинга, которые в случае открытого API могут решить задачу продуктивнее[21]. ПрименениеВеб-скрейпинг стал важным инструментом для автоматизированного сбора информации в Интернете. Он является частью маркетинговых информационных систем (MIS) для формирования баз данных или банков данных, благодаря которым нужные сведения предоставляются в форме табличных отчетов[22]. Технологии работы поисковых систем, агрегаторы контента также взаимосвязаны с программами веб-скрейпинга[23]. Веб-скрейпинг представляет собой форму копирования данных, в которой определённая необходимая для получения информация собирается из Интернета и аккумулируется, как правило, в центральную локальную базу данных или электронную таблицу, для последующего извлечения или анализа[24]. Программное обеспечение для скрейпинга веб-страниц может получить доступ к всемирной паутине непосредственно с помощью протокола передачи гипертекста, а также через веб-браузер. Полученное содержимое страницы можно анализировать, переформатировать, копировать данные в электронную таблицу и так далее. Веб-скрейпинг обычно берёт часть данных из страницы, чтобы использовать её для другой цели. Примером скрейпинга может служить поиск на различных сайтах и копирование имен, телефонных номеров, электронных адресов, URL-адресов определённой тематики для создания базы контактов. В основном веб-скрейперы решают следующие задачи:
Веб-скрейпинг может быть как самостоятельным инструментом и служить для целевого поиска информации, также он может стать компонентом веб-разработок, используемых для веб-индексации, веб-майнинга и интеллектуального анализа данных, онлайн-мониторинга, изменения цен и их сравнения, для наблюдения за конкуренцией, и другого сбора данных. Программы и аналогиПрограммы веб-скрейпинга не рассчитаны на обычных пользователей, с ними работают программисты, которые в большинстве случаев пишут коды под конкретные задачи. В Интернете можно найти различные средства и инструменты для веб-скрейпинга: библиотеки, приложения, online-сервисы, облачные сервисы, сервисы типа DaaS, плагины к браузерам. Один из популярных средств скрейпинга Scrapy (это бесплатный фреймворк с открытым кодом[26]). Среди коммерческих популярной является платформа Import.IO[27]. Существует разработки, например, Nokogiri, который создан специально для языка программирования Ruby[21], скрейперы, которые выполняют определённую задачу из множества возможных: Outwit Hub[28] собирает текстовую информацию и распределяет по ячейкам. Новые формы веб-скрейпинга включают прослушивание каналов данных с веб-серверов. Например, JSON обычно используется в качестве транспортного механизма хранения данных между клиентом и веб-сервером. Получение данных с сайтов при помощи доступа к API также эффективно. Такие компании, как Amazon AWS и Google Google (API Discovery service), предоставляют конечным пользователям бесплатные инструменты, сервисы и общедоступные данные для парсинга. Способы защиты и обход блокировокСуществуют методы для предотвращения сайтами веб-скрейпинга, такие как обнаружение и блокировка от обхода (просмотра) ботами своих страниц. В ответ на это существуют системы веб-скрейпинга, которые полагаются на использование методов анализа DOM, компьютерного зрения и обработки естественного языка для имитации просмотра человеком, чтобы обеспечить сбор содержимого веб-страницы для автономного анализа. Администраторы могут блокировать программы веб-скрейпинга, чтобы информация не была использована конкурентами. Программы скрейпинга могут быть распознаны по следующим признакам:
Способы блокировки:
Чтобы обойти блокировку, программы веб-скрейпинга должны производить на сайте действия, максимально близкие к поведению пользователей. Поэтому следует периодически ротировать IP-адреса, изменять идентификатор пользовательского агента (User Agent) и настроить скорость обращений веб-скрейпера на оптимальную, а между обращениями — встроить случайные действия на сайте, которые не вызовут подозрения[29]. Юридические особенностиЮридические аспекты веб-скрейпинга регулируются законодательством в области защиты персональных данных. В России регулирующим документом выступает Федеральный закон «О персональных данных» от 27 июля 2006 года № 152-ФЗ[30]. В Евросоюзе действие скрейперов должно соответствовать требованию общего регламента защиты персональных данных (GDPR)[31]. Во Франции с апреля 2020 года действует отдельный регламентирующий документ, изданный национальной комиссией по информатизации и свободе (CNIL) ограничивающий сбор персональных данных из открытых источников[32]. Большинство компаний напрямую запрещают скрейпинг своих данных в правилах использования и внедряют инструменты борьбы со скрейперами[33]. См. такжеПримечания
Литература
Ссылки |