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