Что такое веб-скраппинг? Как собирать данные с веб-сайтов
Программирование

Что такое веб-скраппинг? Как собирать данные с веб-сайтов

Вы когда-нибудь теряли драгоценное время на чтение данных на веб-страницах? Вот как найти нужные вам данные с помощью веб-скрейпинга

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

Почему веб-скраппинг полезен

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

Настолько много, что мозг самого умного человека, усовершенствованный до 100% эффективности (кто-то должен снять об этом фильм), все равно не смог бы вместить 1/1000 часть данных, хранящихся в Интернете в одних только Соединенных Штатах

В 2016 году компания Cisco подсчитала, что объем трафика в Интернете превысил один зеттабайт, что составляет 1 000 000 000 000 000 000 000 000 000 000 000 000 000 000 байт, или один секстиллион байт (давайте, похихикайте над секстиллионом). Один зеттабайт – это примерно четыре тысячи лет потокового вещания Netflix. Это было бы равносильно тому, если бы вы, бесстрашный читатель, просмотрели сериал ‘Офис’ от начала до конца без остановки 500 000 раз

Image Credit: Cisco/The Dawn of the Zettabyte.

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

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

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

Похожие статьи: Что такое добыча данных и является ли она незаконной?

Как браузер получает веб-данные?

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

Сначала ваш браузер берет URL-адрес, который вы ввели или на который нажали (совет: наведите курсор на ссылку, чтобы увидеть URL-адрес в нижней части браузера, прежде чем нажать на нее, чтобы избежать ‘панка’), и формирует ‘запрос’ для отправки на сервер. Сервер обработает запрос и отправит ответ

Ответ сервера содержит HTML, JavaScript, CSS, JSON и другие данные, необходимые для того, чтобы ваш браузер сформировал веб-страницу для вашего удовольствия

Инспектирование веб-элементов

Современные браузеры позволяют нам узнать некоторые подробности этого процесса. В Google Chrome на Windows вы можете нажать Ctrl + Shift + I или щелкнуть правой кнопкой мыши и выбрать Inspect. После этого в окне появится окно, которое выглядит следующим образом

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

В правом нижнем углу мы видим информацию о HTTP-запросе.URL – это то, что мы ожидаем, а ‘метод’ – это HTTP-запрос ‘GET’. Код состояния в ответе указан как 200, что означает, что сервер считает запрос действительным

Под кодом состояния находится удаленный адрес, который является публичным IP-адресом сервера почини-компьютер.рф. Клиент получает этот адрес через протокол DNS

В следующем разделе перечислены подробности об ответе. Заголовок ответа содержит не только код состояния, но и тип данных или содержимого, которое содержит ответ. В данном случае мы видим ‘text/html’ со стандартной кодировкой. Это говорит нам о том, что ответ – это буквально HTML-код для отображения веб-сайта

Другие типы ответов

Кроме того, серверы могут возвращать объекты данных в ответ на запрос GET, а не только HTML для отображения на веб-странице. Интерфейс прикладного программирования (или API) веб-сайта обычно использует этот тип обмена

Просматривая вкладку ‘Сеть’, как показано выше, вы можете увидеть, есть ли такой тип обмена. При исследовании таблицы лидеров CrossFit Open Leaderboard показан запрос на заполнение таблицы данными

При переходе к ответу вместо HTML-кода для визуализации веб-сайта отображаются данные JSON. Данные в JSON представляют собой серию меток и значений в виде многоуровневого, очерченного списка

Разбор HTML-кода вручную или перебор тысяч пар ключ/значение в JSON во многом напоминает чтение ‘Матрицы’. На первый взгляд, это выглядит как тарабарщина. Информации может быть слишком много, чтобы расшифровать ее вручную

Веб-скраперы в помощь!

Теперь, прежде чем вы попросите синюю таблетку, чтобы убраться отсюда, вы должны знать, что нам не нужно вручную декодировать HTML-код! Незнание – не блаженство, и этот стейк очень вкусный

Веб-скрапер может выполнить эти сложные задачи за вас. Фреймворки для скраппинга доступны на Python, JavaScript, Node и других языках. Один из самых простых способов начать заниматься скраппингом – использовать Python и Beautiful Soup

Скраппинг веб-сайта с помощью Python

Для начала работы достаточно всего нескольких строк кода, если у вас установлены Python и BeautifulSoup. Вот небольшой скрипт, позволяющий получить исходный текст сайта и позволить BeautifulSoup оценить его

frombs4importBeautifulSoup
import requests
url ='http://www.athleticvolume.com/programming/'
content = requests.get(url)
soup = BeautifulSoup(content.text)
print(soup)

Очень просто, мы делаем GET-запрос к URL, а затем помещаем ответ в объект. При печати объекта отображается исходный HTML-код URL. Процесс происходит так же, как если бы мы вручную зашли на сайт и нажали View Source

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

Магия BeaufiulSoup заключается в возможности поиска по всему HTML-коду с помощью встроенной функции findAll(). В данном конкретном случае на сайте используется несколько тегов ‘sqs-block-content’. Поэтому скрипт должен перебрать все эти теги и найти тот, который нас интересует

Кроме того, в разделе есть несколько тегов <p>Сценарий может добавить весь текст из каждого из этих тегов в локальную переменную. Для этого добавьте в скрипт простой цикл:

fordiv_classinsoup.findAll('div', {'class''sqs-block-content'}):
 recordThis =False
forindiv_class.findAll('p'):
if'PROGRAM'inp.text.upper():
 recordThis =True
ifrecordThis:
 program += p.text
 program +='
'

Вуаля! Родился веб-скребок

Увеличение масштаба скраппинга

Существует два пути для продвижения вперед

Один из способов изучения веб-скрейпинга – использовать уже созданные инструменты.Web Scraper (отличное название!) имеет 200 000 пользователей и прост в использовании. Кроме того, Parse Hub позволяет пользователям экспортировать собранные данные в Excel и Google Sheets

Кроме того, Web Scraper предоставляет плагин для Chrome, который помогает визуализировать процесс создания веб-сайта. Лучшим из всех, судя по названию, является OctoParse, мощный скрепер с интуитивно понятным интерфейсом

Наконец, теперь, когда вы знаете предысторию веб-скрейпинга, создание собственного маленького веб-скрейпера, способного ползать и работать самостоятельно, – увлекательное занятие

Теги

Об авторе

Алексей Белоусов

Привет, меня зовут Филипп. Я фрилансер энтузиаст . В свободное время занимаюсь переводом статей и пишу о потребительских технологиях для широкого круга изданий , не переставая питать большую страсть ко всему мобильному =)

Комментировать

Оставить комментарий