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

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Процесс
Процесс Веб-скрейпинга

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

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

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

История[править | править код]

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

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

Методы[править | править код]

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

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

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

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

Программы и аналоги[править | править код]

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

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

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

Способы защиты и обход блокировок[править | править код]

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

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

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

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

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

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

Юридические особенности[править | править код]

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

См. также[править | править код]

Примечания[править | править код]

  1. 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.
  2. Web-scraping и классификация текстов методом наивного Байеса. cyberleninka.ru. Дата обращения: 14 января 2020. Архивировано 13 декабря 2019 года.
  3. Тютярев А. А., Соломатин Д. И. Разработка фреймворка для создания веб-скрейперов // Вопросы науки. — 2016. — Т. 3, № 13. Архивировано 25 января 2021 года.
  4. Vargiu & Urru. Exploiting web scraping in a collaborative filtering- based approach to web advertising (англ.) // Artificial Intelligence Researc. — 2013. — № 2 (1). — doi:10.5430/air.v2n1p44.
  5. World Wide Web Wanderer. Дата обращения: 9 января 2020. Архивировано 3 января 2020 года.
  6. The first web robot - 1993. Дата обращения: 9 января 2020. Архивировано 19 января 2021 года.
  7. The effect of search engine results page presentation style on user satisfaction and eye movements | Semantic Scholar
  8. Валерия Черепенчук, Ирина Ломакина, Наталья Сердцева. Технологии, изменившие мир. — Litres, 2019-12-13. — 322 с. — ISBN 978-5-04-220661-0.
  9. С. Кингснорт. Стратегия цифрового маркетинга. — ISBN 9785041757397.
  10. 1 2 3 4 Web Scraping: How It All Started and Will Be (англ.). www.octoparse.com. Дата обращения: 9 января 2020. Архивировано 7 августа 2020 года.
  11. Beautiful Soup: We called him Tortoise because he taught us. www.crummy.com. Дата обращения: 14 января 2020. Архивировано 27 марта 2022 года.
  12. Jeff Desjardins. What Happens in an Internet Minute in 2018? www.visualcapitalist.com. Visual Capitalist (14 мая 2018). Дата обращения: 14 января 2020. Архивировано 11 ноября 2019 года.
  13. 1 2 Китаев Е. Л., Скорнякова Р. Ю., “Скрейпинг «на лету» внешних веб ресурсов, управляемый разметкой HTML страницы”, Препринты ИПМ им. М. В. Келдыша, 2019, 020, 31 с. www.mathnet.ru. Дата обращения: 7 марта 2020.
  14. Демидова О.О., Савельев А.О. Сравнительный анализ техник извлечения данных из веб-страниц при решении задачи кластеризации научных публикаций // Электронные средства и системы управления. Материалы докладов международной научно-практической конференции..
  15. Song, Ruihua. Joint Optimization of Wrapper Generation and Template Detection" (PDF). The 13th International Conference on Knowledge Discovery and Data Mining. Microsoft Research (14 сентября 2007). Дата обращения: 27 ноября 2019. Архивировано 27 ноября 2019 года.
  16. What is the Document Object Model? www.w3.org. Дата обращения: 9 января 2020. Архивировано 6 мая 2019 года.
  17. Song R. Joint Optimization of Wrapper Generation and Template Detection // The 13th International Conference on Knowledge Discovery and Data Mining. — 2007. — С. 13—20.
  18. Способ агрегирования и преобразования данных и устройство для его реализации. findpatent.ru. Дата обращения: 9 марта 2020.
  19. What is FreeFormat (англ.). www.gooseeker.com. Дата обращения: 7 марта 2020. Архивировано 3 декабря 2019 года.
  20. Xconomy: Diffbot Is Using Computer Vision to Reinvent the Semantic Web (англ.). Xconomy (25 июля 2012). Дата обращения: 7 марта 2020. Архивировано 29 февраля 2020 года.
  21. 1 2 Тим Джонс М. Извлечение информация из Интернета при использовании языка Ruby (22 мая 2014). Дата обращения: 13 декабря 2019. Архивировано 13 декабря 2019 года.
  22. Павлов Н. В. Методы маркетинговых исследований.
  23. Joyce G. (дата обращения 01.06.19 Data Reveals the GRAMMYs 2017 Highlights on Social Media. Дата обращения: 17 декабря 2019. Архивировано 17 декабря 2019 года.
  24. Басалаева А. Ю. , Гареева Г. А. , Григорьева Д. Р. Веб-скрейпинг и классификация текстов методом Наивного Байеса // Инновационная наука. — 2018. — № 5—2. — ISSN 2410-6070. Архивировано 13 декабря 2019 года.
  25. 1 2 Москаленко А. А., Лапонина О. Р., Сухомлин В. А. Разработка приложения веб-скрапинга с возможностями обхода блокировок // Современные информационные технологии и ИТ-образование. — 2019. — Т. 15, № 2. — С. 413—420. — doi:10.25559.
  26. Scrapy | A Fast and Powerful Scraping and Web Crawling Framework. scrapy.org. Дата обращения: 7 марта 2020. Архивировано 22 марта 2020 года.
  27. Web Data Integration (англ.). www.import.io. Import.io - Data Extraction, Web Data, Web Harvesting, Data Preparation, Data Integration. Дата обращения: 7 марта 2020. Архивировано 5 марта 2020 года.
  28. Видеоурок «Теплицы». Что такое веб-скрейпинг. te-st.ru. «Теплица социальных технологий»: Курсы, статьи, видеоуроки, события, IT-решения и сообщества (25 января 2017). Дата обращения: 13 декабря 2019. Архивировано 13 декабря 2019 года.
  29. 1 2 Москаленко А. А., Лапонина О. Р., Сухомлин В. А. Разработка приложения веб-скрапинга с возможностями обхода блокировок // Современные информационные технологии и ИТ-образование. — 2019. — Т. 5, № 2.
  30. Как владельцам сайтов избежать штрафов по 152-ФЗ — Федеральному закону «О персональных данных». PDMaster.ru: информационный портал о персональных данных (15 апреля 2020). Дата обращения: 5 июля 2020. Архивировано 5 июля 2020 года.
  31. Legal Web Scraping - Web scraping service explained (англ.). Web scraping service by FindDataLab (6 апреля 2020). Дата обращения: 5 июля 2020. Архивировано 28 января 2021 года.
  32. FindDataLab.com. Can You Still Perform Web Scraping With The New CNIL Guidelines? (англ.). Medium (9 июня 2020). Дата обращения: 5 июля 2020. Архивировано 5 июля 2020 года.

Литература[править | править код]

  • Китаев Е. Л., Скорнякова Р. Ю. 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.

Ссылки[править | править код]