Когда вам нужно извлечь информацию из Интернета, вы неизбежно столкнетесь с термином «веб-парсинг», он же «парсинг данных» в русскоязычной среде. В то же время вы найдете огромное количество сервисов и инструментов, которые стремятся помочь вам в вашем начинании.
При таком большом количестве, к сожалению, не всегда легко быстро найти нужный инструмент для конкретного случая и сделать правильный выбор. Именно это мы и хотим рассмотреть в сегодняшней статье.
Мы рассмотрим инструменты, как коммерческие, так и с открытым исходным кодом, доступные в сфере парсинга и извлечения данных, и подробно остановимся на их особенностях, а также на том, как их лучше использовать в вашем конкретном случае.
Веб-парсинг — это сбор контента и любых данных с веб-сайтов. В русскоязычном контексте термин “парсинг” часто используется как синоним “парсинга”, обозначая процесс автоматического сбора данных с веб-страниц. Однако, если быть более точными, парсинг – это процесс автоматического извлечения данных с веб-страниц, а парсинг – анализ и преобразование этих данных в удобный формат. При переводе с английского, часто можно встретить такие вариации: парсинг, скреппинг, веб-парсинг. Все это разные вариации написания одного и того же термина, отражающего процесс автоматизированного извлечения данных из интернет-ресурсов. Скраперы (парсеры) бывают разных форм и видов. Точные детали того, что парсер будет собирать, могут сильно различаться в зависимости от конкретного случая использования.
Самый распространенный пример — это, конечно же, поисковые системы. Они постоянно просматривают и парсят веб-страницы в поисках нового и обновленного контента, чтобы включить его в свой поисковый индекс. Другие примеры включают:
У нас есть прекрасная статья, посвященная именно этому вопросу — Что такое веб-парсинг.
Пожалуйста, ознакомьтесь с ней, если вы хотите узнать больше о веб-парсинге.
Многие из нас любят играть в Dart, но мы не должны выбирать платформу (или технологию) для парсинга именно так, верно?
Поэтому, прежде чем просто прыгнуть в глубокую воду, давайте определим несколько ключевых параметров нашего проекта, которые помогут нам сузить список потенциальных решений для парсинга.
Как только вы получите более четкое представление о требованиях вашего проекта, вам будет легче сопоставить их с доступными технологиями и платформами и выбрать наиболее подходящий инструмент для конкретной задачи парсинга.
Итак, давайте подробнее рассмотрим различные типы веб-парсеров, парсеров и популярных представителей каждой категории. Поехали!
SaaS-платформы для парсинга обычно предоставляют услугу «все в одном», где вы используете их инструменты, чтобы определить, какие сайты вы хотите парсить, как полученные данные должны быть преобразованы и, в конечном итоге, предоставлены вам.
Несмотря на то, что они обычно предоставляются за периодическую абонентскую плату, они также предоставляют множество дополнительных услуг (например, управление прокси-серверами, поддержка браузеров), которые другие решения либо не поддерживают вообще, либо только с помощью сторонних плагинов.
В целом, выбор SaaS-платформы для вашего проекта по парсингу обеспечит вам наиболее полный пакет услуг, как с точки зрения масштабируемости, так и с точки зрения удобства обслуживания.
ScrapingBee предлагает легкий REST API (вместе с библиотеками поддержки для популярных языковых платформ), который обеспечивает легкий доступ ко всем возможностям платформы.
Среди этих возможностей вы найдете поддержку извлечения данных (с помощью CSS-селекторов), скриншотов страниц, доступ к поисковому API Google, традиционные (дата-центр) и премиум-прокси. Особенно часто последний необходим, чтобы избежать блокировки при доступе к сайту.
ScrapingBee также предоставляет доступ к полноценному движку браузера Chrome, что особенно важно при работе с сайтами, которые сильно зависят от JavaScript и рендеринга на стороне клиента.
ScrapingBee предназначен для разработчиков и технологических компаний, которые хотят самостоятельно управлять конвейером парсинга, не заботясь о прокси-серверах и безголовых браузерах.
Благодаря подходу «черного ящика» ScrapingBee — все управление прокси-серверами и сетями берет на себя платформа, а пользователю всего лишь требуется предоставить адреса нужных сайтов вместе с соответствующими параметрами запроса.
ScrapingBee предлагает совершенно бесплатную пробную версию с 1000 API-вызовов. Все подробности на https://app.scrapingbee.com/account/register.
Минусы
Diffbot предлагает набор веб-интерфейсов, которые возвращают собранные данные в структурированном формате. Сервис поддерживает анализ настроений и естественного языка, хотя он довольно дорогой: самый дешевый тарифный план стоит от 300 долларов США в месяц.
Основная аудитория Diffbot — разработчики и технологические компании, чьи сценарии использования в большей степени ориентированы на анализ данных (в том числе настроений и естественного языка).
Минусы
В отличие от SaaS-провайдеров, парсеры для настольных компьютеров — это (локально) установленные приложения, над которыми вы имеете полный контроль (как над веб-браузером).
Хотя они обычно не имеют подписки и доступны бесплатно или за одноразовую лицензионную плату, они также требуют, чтобы вы поддерживали все запущенные экземпляры парсеров. Это означает, что вы должны обеспечить аппаратное обеспечение, подключение и общее обслуживание системы. В зависимости от вашей конфигурации у вас могут возникнуть проблемы с масштабированием экземпляра парсера.
Однако для небольших проектов они определенно являются жизнеспособной альтернативой.
ScrapeBox — это настольный парсер, доступный для Windows и macOS, ориентированный на задачи, связанные с SEO, и заявленный производителем как «швейцарский армейский нож для SEO». Однако в нем есть и ряд других функций, которые расширяют сферу SEO (например, парсинг YouTube, агрегация электронной почты, размещение контента и многое другое).
ScrapeBox позиционирует себя в первую очередь для использования в SEO, но он может быть одинаково полезен для массового соскабливания YouTube и общего соскабливания контента.
Учитывая ограничения по масштабируемости и поддержку прокси, он может быть особенно полезен для проектов с небольшими наборами данных, где нет необходимости вращаться или указывать местоположение клиента.
Минусы
SEO-паукScreamingFrog- это краулер сайтов для Windows, macOS и Linux. Он позволяет просматривать URL-адреса для анализа и проведения технического аудита и SEO на сайте. Он способен эффективно просматривать как небольшие, так и крупные веб-сайты, позволяя анализировать результаты в режиме реального времени.
В следующем видеоролике представлен краткий обзор этого инструмента:
Из всех платформ и сервисов, упомянутых в этой статье, ScreamingFrog ориентирован исключительно на SEO, поэтому он будет наиболее полезен для SEO-профессионалов и агентств, специализирующихся в этой области.
Минусы
Easy Web Extract — это классическое настольное приложение для Windows с удобным пользовательским интерфейсом, в котором большинство шагов по отбору данных можно настроить без необходимости использования кода.
В отличие от ScrapeBox и ScreamingFrog, Easy Web Extract не делает основной упор на SEO, а позиционирует себя скорее как парсер общего назначения.
Поскольку приложение ограничено локальными системными и сетевыми ресурсами, вы можете столкнуться с проблемами масштабируемости и блокировки сайта. В этом контексте он может лучше всего подойти для небольших заданий по парсингу.
Плюсы и минусы ScreamingFrog
Минусы
Еще одна довольно популярная категория веб-парсеров основана на браузерных расширениях. Эти программы запускаются непосредственно в экземпляре браузера и полностью используют движок браузера и интегрированные в него веб-технологии (DOM, стили и селекторы CSS, работающий JavaScript).
И в Firefox, и в Chrome в галереях расширений есть бесчисленное множество таких инструментов. Например, для Chrome полный список можно найти на сайте https://chrome.google.com/webstore/search/scraper?_category=extensions, но давайте рассмотрим трех представителей этой категории парсеров.
WebScraper — одно из самых популярных расширений для парсера в Chrome. Оно позволяет скрапить сайты прямо из браузера, без необходимости локально настраивать какие-либо инструменты или писать код скрипта парсинга.
Вот скриншот интерфейса (доступен в инструментах разработчика Chrome):
Они также предлагают облачный платный сервис по подписке, который позволяет выполнять задачи по парсингу на их инфраструктуре. Это может быть особенно полезно, если вашему скрипту необходимо задать определенное место для парсинга, используя прокси-серверы.
Компании без разработчиков, маркетинговые команды, менеджеры по продукту…
Минусы
Instant Data Scraper — это расширение от webrobots.io. Вы просто добавляете его в свой профиль Chrome, после чего на панели инструментов браузера появляется новая кнопка, открывающая доступ к функциям парсера.
Расширение ориентировано на работу с таблицами данных, и вам нужно только выбрать нужные элементы данных с помощью мыши. После завершения парсинга вы можете экспортировать данные в файл CSV или Excel.
Для быстрых, оперативных сессий парсинга.
Scraper использует выражения XPath для извлечения данных. Вы добавляете расширение, открываете нужную страницу, щелкаете правой кнопкой мыши и выбираете «Scrape similar».
На данный момент расширение не преследует никаких коммерческих интересов, поэтому оно полностью бесплатно, но и не предлагает никаких дополнительных услуг (например, облачного исполнения).
Для базовых задач извлечения данных без сложных структур страниц или требований к просмотру.
И последнее, но не менее важное: конечно, всегда есть возможность создать свой собственный, полностью адаптированный парсер на вашем любимом языке программирования.
Вы можете найти библиотеки и целые фреймворки для веб-парсинга практически для каждого языка, и даже некоторые более экзотические языки, такие как статистический R, имеют поддержку веб-парсинга.
Хотя в следующих примерах мы сосредоточимся на Python, PHP и JavaScript, пожалуйста, загляните в блог ScrapingBee, где вы найдете множество примеров других языков, в том числе для Ruby, Groovy, Perl, Go и C — вот лишь некоторые из них.
Scrapy — это бесплатный фреймворк для веб-краулинга с открытым исходным кодом, написанный на Python. Поскольку он обрабатывает запросы асинхронно, он отлично справляется с большим количеством сайтов, что способствует его способности хорошо масштабироваться.
Scrapy определенно рассчитан на аудиторию с опытом работы на Python. Несмотря на то, что он служит фреймворком и самостоятельно справляется со многими задачами, он все же не является готовым решением, а требует достаточного опыта работы с Python.
Например, он особенно хорошо работает при крупномасштабном веб-парсинге:
pyspider — это еще один инструмент для веб-краулинга с открытым исходным кодом. Он имеет веб-интерфейс, позволяющий отслеживать выполнение задач, редактировать скрипты и просматривать результаты.
Как и Scrapy, он требует знания Python, но его интегрированный пользовательский интерфейс делает его более подходящим для широкой публики и обеспечивает более дружественный UX.
Goutte — это PHP-библиотека, предназначенная для веб-краулинга и веб-парсинга общего назначения. Она в значительной степени опирается на компоненты Symfony и удобно комбинирует их для поддержки ваших задач по парсингу.
Goutte предоставляет хороший API для ползания по веб-сайтам и извлечения данных из HTML/XML-ответов.
Он также хорошо интегрируется с библиотекой запросов Guzzle, что позволяет настраивать фреймворк для более сложных случаев использования.
Будучи библиотекой PHP, Goutte, конечно, ограничена средой PHP, но если ваш язык — PHP, вы определенно захотите ее проверить.
После короткого экскурса в страну PHP мы возвращаемся к Python. На этот раз с помощью Beautiful Soup.
В отличие от Scrapy и pyspider, BS4 — как ее ласково называют поклонники библиотеки — это не фреймворк, а скорее традиционная библиотека, которую вы можете использовать в своем парсерском приложении.
BS4 — это отличный выбор, если вы решили использовать Python для своего парсера, но не хотите быть ограничены требованиями фреймворка.
Beautiful Soup предлагает простой набор функций, который поможет вам в создании собственного парсера.
Если вы знакомы с jQuery, вы сразу почувствуете себя как дома с Cheerio.js, который, по сути, является его аналогом на стороне сервера.
Cheerio поддерживает весь синтаксис CSS-селекторов, знакомый вам по jQuery, и позволяет анализировать HTML-документы из различных источников и извлекать данные с помощью привычного вызова $(»).
На самом деле это можно выразить одним предложением: когда у вас есть HTML-контент, который нужно разобрать в среде JavaScript или Node.js. И да, вы должны быть знакомы с JavaScript, Node.js и npm.
Минусы
Puppeteer — это библиотека Node.js, которая выступает в качестве моста к экземпляру Chrome Headless, что позволяет вам управлять полноценным браузером и скрапить веб-страницы из вашего JavaScript-кода, как если бы вы были обычным пользователем.
Полный контроль в данном контексте означает, что вы можете делать скриншоты, загружать SPA, отправлять и обрабатывать события JavaScript.
Puppeteer станет вашим незаменимым инструментом, если вы выбрали платформу JavaScript и хотите парсить сайты с тяжелым JavaScript (например, SPA), где, например, Cheerio не смог получить доступ к нужным данным. Puppeteer, опираясь на соответствующий браузерный движок, предоставит вам доступ к сокровищам данных в кратчайшие сроки.
Минусы
Хотя Common Crawl не является приложением для парсинга или фреймворком кода как таковым, его все же стоит упомянуть.
Этот проект не выполняет функцию извлечения данных, как сервисы и инструменты, о которых мы говорили до сих пор, а подходит к теме с совершенно другой стороны. По сути, он заранее просматривает и парсит веб-страницы и предоставляет эти данные в виде общедоступных наборов данных, к которым все желающие могут получить бесплатный доступ.
Чтобы представить усилия по поиску и доступные данные в перспективе, на момент написания этих строк их текущий набор данных составляет около 400 ТБ(для неизбежного сравнения с каким-то совершенно несвязанным объектом это примерно 650 000 традиционных компакт-дисков).
Common Crawl будет идеальным решением, если его наборы данных соответствуют вашим требованиям. Если качество предварительно собранных данных достаточно для вашего случая использования, это может быть самым простым способом оценки веб-данных.
Минусы
Мир веб-парсинга довольно разнообразен. Он предлагает решения для всех видов работ по парсингу данных, начиная от небольших локальных настольных приложений и заканчивая корпоративными платформами, которые могут масштабировать ваши краулеры до сотен запросов в секунду.
Кроме того, существует огромное количество библиотек для парсеров, которые помогут вам практически на любом языке программирования, если вы решите пойти по ручному пути и создать собственную платформу для сбора и сканирования данных в Интернете.
Какую бы технологию вы ни выбрали, обязательно протестируйте ее, прежде чем использовать в производстве, и проверьте, нет ли у нее крайних случаев. Два важных аспекта: насколько хорошо платформа масштабируется (то есть как она работает с большим количеством URL) и как она гарантирует, что ваши запросы не будут заблокированы в первую очередь.
Мы надеемся, что эта статья предоставила вам хороший, первый обзор различных доступных технологий веб-парсинга и облегчила выбор между всеми этими платформами, сервисами, технологиями и библиотеками.
Счастливого парсинга от ScrapingBee!
Краткое резюме: как превратить сеть сайтов в стабильный источник дохода Создание сети информационных сайтов —…
Знаете ли вы, что невидимые технические ошибки могут «съедать» до 90% вашего потенциального трафика из…
Введение: почему мониторинг цен — необходимость, а защита — не преграда Представьте, что вы пытаетесь…
Значительная часть трафика на любом коммерческом сайте — это не люди. Это боты, которые могут…
Систематический мониторинг цен конкурентов — это не просто способ избежать ценовых войн, а доказанный инструмент…
Краткое содержание В мире, где 93% потребителей читают отзывы перед покупкой 1, а рейтинг компании…