перейти к содержанию

Что такое крупномасштабный парсинг и как он работает?

Интернет растет с каждым днем. По данным Internet Live Stats, по состоянию на 1.9 год в Интернете существовало более 2024 миллиарда веб-сайтов. Большая часть данных на этих сайтах — каталоги продуктов, списки недвижимости, информация о местных предприятиях — невероятно ценна, если их извлечь и структурировать.

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

Я работаю в сфере парсинга веб-страниц более 5 лет, помогая компаниям во многих отраслях извлекать необходимые им данные. По моему опыту, стандартные рабочие процессы парсинга веб-страниц сталкиваются с ограничениями при работе с такими крупными сайтами, как Amazon, eBay или Craigslist. Среднестатистический парсер не предназначен для обработки миллионов списков или продуктов.

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

Этика парсинга веб-страниц: не перегружайте сайты

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

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

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

Масштаб парсинга должен соответствовать возможностям сайта. Крупные сайты, такие как Amazon (более 2.5 миллионов посетителей в день), могут обрабатывать гораздо больше данных, чем местный блог. Если вы сомневаетесь, изучите показатели посещаемости сайта и начните с малого. Ответственная очистка приносит пользу всем.

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

Обычные рабочие процессы парсинга веб-страниц и их ограничения

Давайте пройдемся по обычному процессу парсинга для обычного сайта, а затем обсудим, почему этот подход не работает на крупных сайтах.

Шаг 1. Откройте целевую домашнюю страницу.

Парсер начинается с открытия домашней страницы сайта, который нужно парсить. Например, BestBuy.com для сбора информации о продуктах электроники.

Шаг 2. Поставьте страницы верхнего уровня в очередь

Парсер ставит в очередь страницы основной категории и подкатегорий для очистки, например, «Телевидение», «Ноутбуки», «Наушники» и т. д.

Шаг 3. Очистите содержимое страницы

Парсер собирает данные с каждой страницы. На странице продукта он будет извлекать такие детали, как модель, цена, характеристики и т. д.

Шаг 4. Сканирование связанных страниц

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

Шаг 5. Экспортируйте очищенные данные

Наконец, очищенный контент экспортируется в CSV, JSON, базу данных и т. д. для анализа и использования.

Это отлично работает для сайтов малого и среднего размера. Но для крупных сайтов есть три основных ограничения:

Ограничения на нумерацию страниц: Большинство сайтов разбивают контент на множество пронумерованных страниц (1,2,3..) или (1,2,3…350). Обычно существует ограничение в 1,000–10,000 XNUMX страниц. Недостаточно для больших наборов данных.

Вычислительные ресурсы: Один компьютер, очищающий большие сайты, быстро достигнет ограничений памяти и процессора. Скорость очистки снизится.

Запрещенные прокси: Масштабное парсинг с одного IP-адреса приведет к бану. Прокси-серверы центров обработки данных не обеспечивают достаточного разнообразия IP-адресов.

Итак, какие методы позволяют крупномасштабному парсингу решить эти проблемы?

Решение ограничений на нумерацию страниц

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

Допустим, нам нужно получить 200,000 10,000 списков товаров с сайта электронной коммерции. Страница «все продукты» содержит всего XNUMX XNUMX результатов.

Шаг 1) Отфильтруйте по категории – Найдите и отфильтруйте подкатегории, такие как «электроника» или «одежда», каждая из которых содержит подмножество из 200 тысяч товаров.

Шаг 2) Разделить по ценовому диапазону – Возьмите каждую подкатегорию и разделите результаты на ценовые категории, например, 0–50 долларов США, 50–100 долларов США, 100–500 долларов США и т. д.

Шаг 3) Рекурсивное разделение диапазонов – Для скобок, которые все еще содержат слишком много страниц, разделите их еще раз. Сетку в 100–500 долларов можно разделить на 100–300 и 300–500 долларов.

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

В качестве примера, вот как мы могли бы разделить сбор 220,000 XNUMX электронных продуктов:

Категория ФильтрЦеновой диапазонКоличество продуктов
Electronics$ 0-5018,000
$ 50-10026,000
$ 100-50092,000
$ 500-100028,000
$ 1000 +56,000

Как видите, такое разделение позволяет нам собрать на порядки больше продуктов, чем одно представление «все продукты».

Масштабирование серверов для больших парсов

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

Решение состоит в горизонтальном масштабировании путем распределения рабочей нагрузки по парсингу между несколькими серверами. Это известно как распределенное парсинг.

Вот как это работает:

  • Список страниц и фильтров для очистки разделен между серверами.

  • Парсинг выполняется параллельно на всех серверах. Это многократно увеличивает мощность очистки.

  • Собранные данные снова объединяются в один единый набор данных.

Ключевым моментом является правильное распределение задач: ни один сервер не должен быть перегружен. Серверы можно интеллектуально автоматически увеличивать или уменьшать по мере необходимости.

В одном крупном проекте по созданию сайта сравнения цен нам пришлось собрать 20 миллионов списков товаров с 50 ведущих сайтов электронной коммерции Северной Америки. Из одного места это было невозможно.

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

Масштабное распространение делает возможными, казалось бы, невозможные сбои.

Использование прокси для большого парсинга

При парсинге с нескольких серверов и мест прокси необходимы для предотвращения блокировки IP-адресов.

Сами по себе прокси-серверы центров обработки данных часто терпят неудачу в больших масштабах, поскольку их пулы IP-адресов распознаются. Резидентные прокси надежны, но дороже.

Лучший подход сочетает в себе прокси-серверы центров обработки данных, жилых помещений и интернет-провайдеров в зависимости от масштаба проекта.

Вот рекомендации по использованию прокси, основанные на моем опыте:

Соскребающая шкалаРекомендуемые прокси
Менее 1 миллиона страниц в месяцПрокси-серверы дата-центров
1–10 миллионов страниц в месяцСочетание дата-центра и жилого дома
Более 10 миллионов страниц в месяцВ основном жилой, с поддержкой интернет-провайдера.

Для очистки более 10 миллионов страниц ежемесячно требуется интенсивное использование резидентных прокси-серверов в партнерстве с интернет-провайдерами, чтобы обеспечить достаточное разнообразие IP-адресов. Менее 1 миллиона человек могут полагаться исключительно на прокси-серверы центров обработки данных.

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

Ключевым моментом является работа с опытным провайдером веб-парсинга, который может спланировать и реализовать надежное крупномасштабное решение, адаптированное к вашим конкретным потребностям в парсинге. Если у вас на уме большой проект, давайте поговорим!

Присоединяйтесь к беседе

Ваш электронный адрес не будет опубликован. Обязательные поля помечены * *