Освоение парсинга веб-страниц 101: Подробное руководство
Что такое парсинг веб-страниц?
Парсинг веб-страниц - это процесс автоматического сбора данных с веб-страниц с помощью специализированного программного обеспечения.
Каждый день создается триллионы гигабайт данных, что делает невозможным отслеживание каждой новой точки данных. В то же время все больше и больше компаний по всему миру полагаются на различные источники данных, чтобы обогатить свои знания и получить конкурентное преимущество. Вручную удержаться на плаву невозможно.
Именно здесь и приходит на помощь парсинг веб-страниц.
Для чего используется парсинг веб-страниц?
Поскольку коммуникация между системами становится критической, API становятся все более популярными. API - это интерфейс, который веб-сайт предоставляет для взаимодействия с другими системами. Они открывают функциональность для общественности. К сожалению, многие сервисы не предоставляют API. Другие разрешают только ограниченную функциональность.
Парсинг веб-страниц позволяет преодолеть эту ограничение. Он собирает информацию со всего интернета без ограничений API.
Поэтому парсинг веб-страниц используется в различных сценариях:
Мониторинг цен
- Электронная коммерция: отслеживание цен и наличия конкурентов.
- Акции и финансовые услуги: обнаружение изменений цен, активности объема, аномалий и т. д.
Генерация потенциальных клиентов
Извлечение контактной информации: имен, адресов электронной почты, телефонов или должностей.
Выявление новых возможностей, например, в Yelp, YellowPages, Crunchbase и т. д.
Маркетинговые исследования
- Недвижимость: анализ спроса и предложения, рыночные возможности, трендовые районы, вариации цен.
- Автомобили: распределение дилеров, самые популярные модели, лучшие предложения, предложение по городам.
- Путешествия и размещение: доступные номера, популярные районы, лучшие скидки, цены по сезонам.
- Вакансии: наиболее востребованные вакансии, растущие отрасли, крупнейшие работодатели, предложение по секторам и т. д.
- Социальные медиа: отслеживание присутствия бренда и растущих влиятелей. Новые каналы привлечения аудитории, нацеливание на аудиторию и т. д.
- Открытие города: отслеживание новых ресторанов, коммерческих улиц, магазинов, трендовых районов и т. д.
Агрегация
- Новости из разных источников.
- Сравнение цен, например, на страховые услуги, путешествия, юристов.
- Банковское дело: организация всей информации в одном месте.
Отслеживание запасов и продукции
- Сбор подробной информации о продукте и его характеристиках.
- Новые продукты.
SEO (оптимизация поисковых систем): Релевантность и производительность ключевых слов. Отслеживание конкуренции, релевантности бренда, ранга новых игроков.
Машинное обучение/искусственный интеллект - наука о данных: Сбор огромного количества данных для обучения моделей машинного обучения; распознавание изображений, прогнозирование моделей, обработка естественного языка.
Массовая загрузка: Извлечение PDF-файлов или массовых изображений в большом масштабе.
Процесс парсинга веб-страницы
Парсинг веб-страницы работает в основном как стандартное взаимодействие клиента и сервера по протоколу HTTP.
Браузер (клиент) подключается к веб-сайту (серверу) и запрашивает контент. Сервер возвращает HTML-контент, язык разметки, понятный обеим сторонам. Браузер отвечает за отображение HTML в графический интерфейс. Вот и все. Просто, не так ли?
Существуют и другие типы контента, но давайте сосредоточимся на этом на данный момент. Давайте глубже изучим, как работает взаимодействие — это пригодится позже.
Запрос — отправленный браузером
Запрос — это текст, который браузер отправляет на веб-сайт. Он состоит из четырех элементов:
- URL: конкретный адрес на веб-сайте.
- Метод: существует два основных типа: GET для получения данных и POST для отправки данных (обычно форм).
- Заголовки: User-Agent, Cookies, язык браузера, все это здесь. Это одна из самых важных и сложных частей взаимодействия. Веб-сайты сильно опираются на эти данные, чтобы определить, идет ли запрос от человека или бота.
- Тело: обычно ввод, созданный пользователем. Используется при отправке форм.
Ответ — возвращаемый сервером
Когда веб-сайт отвечает браузеру, он возвращает три элемента.
- HTTP-код: число, указывающее статус запроса. 200 означает, что все прошло хорошо. Известный 404 означает, что URL не найден. 500 - это внутренняя ошибка сервера. Вы можете узнать больше о кодах HTTP.
- Содержимое: HTML. Отвечает за отображение веб-сайта. Вспомогательные типы содержимого включают: CSS-стили (внешний вид), изображения, XML, JSON или PDF. Они улучшают пользовательский опыт.
- Заголовки. Как и заголовки запроса, они играют важную роль в коммуникации. Среди прочего, они указывают браузеру "Set-Cookie". Мы вернемся к этому позже.
До этого момента это отражает обычный процесс клиент-сервер. Однако парсинг веб-страниц добавляет новую концепцию: извлечение данных.
Извлечение данных - Парсинг
HTML - это просто длинный текст. После получения HTML мы хотим получить конкретные данные и организовать их в хорошо определенную структуру. Парсинг - это процесс извлечения выбранных данных и их организации в структуру.
Технически HTML является древовидной структурой. Верхние элементы (узлы) являются родителями, а нижние - детьми. Два популярных инструмента облегчают обход дерева для извлечения наиболее значимых частей:
- CSS-селекторы: широко используются для изменения внешнего вида веб-сайтов. Мощные и простые в использовании.
- XPath: они более мощные, но сложнее в использовании. Они не подходят для начинающих.
Процесс извлечения начинается с анализа веб-сайта. Некоторые элементы ценны с первого взгляда. Например, заголовок, цена или описание легко видны на экране. Другая информация, однако, видна только в HTML-коде:
- Скрытые поля ввода: обычно содержат информацию, такую как внутренние идентификаторы, которые являются довольно ценными.
- XHR: веб-сайты выполняют запросы в фоновом режиме для улучшения пользовательского опыта. Они регулярно хранят структурированный контент в формате JSON.
- JSON внутри HTML: JSON - это распространенный формат обмена данными. Он часто находится внутри HTML-кода для обслуживания других служб, таких как аналитика или маркетинг.
- Атрибуты HTML: добавляют семантическое значение другим элементам HTML.
После структурирования данных они сохраняются в базе данных для последующего использования. На этом этапе мы можем экспортировать их в другие форматы, такие как Excel, PDF или преобразовать их для доступа к другим системам.
Проблемы парсинга веб-страниц
Такой ценный процесс не обходится без препятствий.
Веб-сайты активно пытаются избежать отслеживания/парсинга. Они часто создают защитные решения. Популярные веб-сайты устанавливают продвинутые анти-парсинговые системы на уровне промышленности. Эта защита делает задачу чрезвычайно сложной.
Вот некоторые из проблем, с которыми сталкиваются парсеры при работе с соответствующими веб-сайтами (у веб-сайтов с низким трафиком обычно слабые анти-парсинговые системы и, следовательно, низкая ценность):
Ограничение скорости IP
Все устройства, подключенные к интернету, имеют идентификационный адрес, называемый IP. Это похоже на удостоверение личности. Веб-сайты используют этот идентификатор для измерения количества запросов от устройства и попытки его блокировки. Представьте себе IP, запрашивающий 120 страниц в минуту. Два запроса в секунду. Обычные пользователи не могут просматривать страницы с такой скоростью. Поэтому для парсинга в большом масштабе нам нужно ввести новую концепцию: прокси.
Поворотные прокси
Прокси-сервер, или просто прокси, - это компьютер в Интернете с IP-адресом. Он выступает посредником между запрашивающим и веб-сайтом. Он позволяет скрыть исходный IP-адрес запроса за IP прокси и обмануть веб-сайт, заставив его думать, что запрос приходит из другого места. Обычно они используются в качестве обширных пулов IP-адресов и переключаются между ними в зависимости от различных факторов. Опытные парсеры настраивают этот процесс и выбирают прокси в зависимости от домена, геолокации и т. д.
Проверка заголовков / куки
Помните заголовки запроса/ответа? Несоответствие ожидаемых и полученных значений говорит веб-сайту о наличии проблемы. Чем больше заголовков обменивается между браузером и сервером, тем сложнее для автоматизированного программного обеспечения общаться без обнаружения. Это становится все более сложной задачей, когда веб-сайты возвращают заголовок "Set-Cookie", который ожидает, что браузер будет использовать его в следующих запросах.
Идеально было бы делать запросы с минимальным количеством заголовков. К сожалению, иногда это невозможно, что приводит к еще одной проблеме:
Обратная разработка генерации заголовков / куки
Продвинутые веб-сайты не отвечают, если заголовки и куки не на своих местах, что заставляет нас проводить обратную разработку. Обратная разработка - это процесс понимания того, как работает процесс, чтобы попытаться его имитировать. Это требует настройки IP-адресов, User-Agent (идентификация браузера), куки и т. д.
Выполнение JavaScript
Большинство современных веб-сайтов сильно зависят от JavaScript. JavaScript - это язык программирования, выполняемый в браузере. Он добавляет дополнительную сложность к сбору данных, так как многие инструменты не поддерживают JavaScript. Веб-сайты выполняют сложные вычисления на JavaScript, чтобы убедиться, что браузер действительно является браузером. Что приводит нас к следующему пункту:
Браузеры без графического интерфейса
Браузер без графического интерфейса - это веб-браузер, управляемый программным обеспечением без графического интерфейса пользователя. Он требует большого объема оперативной памяти и процессора, что делает процесс более затратным. Selenium и Puppeteer (созданный Google) - два из самых используемых инструментов для этой задачи. Вы угадали: Google - крупнейший парсер веб-сайтов в мире.
Captcha / reCAPTCHA (Разработано Google)
Captcha - это проверочный тест, который определяет, является ли пользователь человеком или нет. Раньше это был эффективный способ избежать ботов. Некоторые компании, такие как Anti-Captcha и 2Captcha, предлагают решения для обхода Captcha. Они предлагают услуги OCR (оптическое распознавание символов) и даже человеческий труд для решения головоломок.
Распознавание шаблонов
При сборе данных вы можете соблазниться пойти по простому пути и следовать регулярному шаблону. Это является серьезным сигналом тревоги для веб-сайтов. Произвольные запросы также ненадежны. Как кто-то должен попасть на 8 страницу? Он, безусловно, должен был быть на 7 странице раньше. В противном случае это указывает на то, что что-то необычное. Найти правильный путь сложно.
Заключение
Надеюсь, это дает общее представление о том, как выглядит автоматизация данных. Мы могли бы говорить об этом бесконечно, но мы углубимся в детали в следующих постах.
Сбор данных в большом масштабе полон секретов. Удерживать темп трудно и дорого. Это трудно, очень трудно.
Предпочтительным решением является использование готовых сервисов, таких как ZenRows, которые превращают веб-сайты в данные. Мы предлагаем удобный API, который берет на себя всю работу, поэтому вам нужно заботиться только о данных. Мы призываем вас попробовать его бесплатно. Мы с удовольствием поможем вам и даже разработаем индивидуальное решение, которое подойдет вам.
Полезен ли вам контент? Распространите слово и поделитесь им в Twitter, LinkedIn или Facebook.
Оригинальная публикация на сайте https://www.zenrows.com.