31 марта 2018 года в Перми состоялся митап Теплицы социальных технологий, посвященный технологии веб-скрейпинга с помощью программного кода. Участники обсудили необходимость сбора данных и рассмотрели сценарии использования собранных данных для исследования проблемы, изучения аудитории в соцсетях и журналистского (гражданского) расследования.
Веб-скрейпинг (от англ. Scraping – соскабливание) – это технология, использующая скрипты для захода на сайт под видом обычного пользователя и собирающая информацию по заранее установленным параметрам. Таким образом, можно получать, обрабатывать, систематизировать и сохранять в обычном текстовом формате данные тысяч веб-страниц за считанные минуты.
Эксперт митапа, Эскендер Джемадинов, магистр факультета экономики, менеджмента и бизнес-информатики НИУ ВШЭ, Пермь, рассказал о теоретических основах сбора данных и показал на практике возможности языка Python.
Первое, с чем стоит разобраться начинающим «скрайперам», – это Document Object Model. Это объектная модель, по которой построен любой html-документ: элементы выстраиваются в иерархию, как ствол и ветви дерева от корня. Каждый html-тег становится частью дерева с типом «элемент». Вложенные в него теги становятся дочерними узлами. У каждого элемента есть атрибут, его характеристика.
С помощью DOM-приложения и исполняемый код, которые «видят» содержимое html-страниц. Указав искомый элемент и его характеристику, можно автоматически найти его на множестве веб-страниц, не прибегая к ручному поиску.
Теперь обратимся к программированию. Для работы по сбору данных могут потребоваться следующие библиотеки Python или их аналоги:
- Requests выполняет HTTP-запросы (обращение к сайту, получение данных веб-страницы);
- BeatifulSoup анализирует html-код и выделяет нужные элементы с указанными характеристиками (это называется «парсинг»).
Нужно учитывать, что администраторам сайтов не нравится, когда кто-то проводит сбор информации таким образом, так как это создает дополнительную нагрузку на сайт. Иногда системные администраторы защищают сайт количеством допустимых запросов, авторизацией, установкой элементов, скрывающих часть контента. С помощью Python можно обойти эти преграды, но это следующая ступень навыков программирования.
Для работы с Python потребуется скачать и установить:
- интерпретатор Python (на митапе в Перми использовали версию 3.6.4);
- интегрированную среду разработки PyCharm Community.
В целом алгоритм действий при сборе информации выглядит так:
Участники митапа под руководством Эскендера Джемадинова для начала собрали информацию с обычной веб-страницы с помощью кода, потом – объявления портала Avito. Не обошли вниманием и соцсети. Эскендер рассказал о своем проекте анализа Instagram.
А если без программирования?
Тем, кому сложно программировать, можно попробовать собирать данные с сайтов с помощью специальных сервисов:
- Import.io – онлайн-сервис. Обзор Теплицы;
- Scraper – расширение для браузера Chrome;
- Listly – расширение для браузера Chrome;
-
Web Robots – онлайн-сервис.
Дополнительно рекомендуем прочитать:
- Книга Райан Митчелл «Скрапинг веб-сайтов с помощью Python. Сбор данных из современного интернета». В книге много примеров кода, некоторые из них можно скачать с GitHub.
- Статья «Web Scraping с помощью Python» на Habrahabr. В статье также приводятся фрагменты кода, которые можно использовать в работе.