Инструменты и библиотеки для веб-скрейпинга
Рассказываем о готовых инструментах для веб-скрейпинга: популярных онлайн-сервисах и библиотеках для языков Python, JavaScript и Java.
21К открытий22К показов
Автор — Мария Багулина
Собирать данные с веб-сайтов (то есть заниматься веб-скрейпингом) можно либо через готовый API, либо путём парсинга. Самостоятельно парсить страницы не всегда просто: многие сайты не любят скрейперов и стараются блокировать их. Мы уже рассказывали, как этого избежать, а в этой статье рассмотрим готовые инструменты для парсинга, среди которых наиболее популярные онлайн-сервисы и библиотеки для языков Python, JavaScript, Java.
Онлайн-сервисы для скрейпинга
Готовые веб-интерфейсы обычно избавляют ото всех хлопот, возникающих во время парсинга веб-страниц. Но по этой же причине большинство из них — платные. Среди примеров:
Scraping-Bot — веб-инструмент, хорошо заточенный под анализ интернет-магазинов: можно легко извлекать изображения, наименования, цены, описания, стоимость доставки и прочую информацию.
Scrapeworks — подойдёт тем, кто не знаком с программированием. Позволяет получать данные со страниц в структурированном формате на ваш выбор.
Diggernaut — парсер, создаваемый с помощью визуального инструмента или метаязыка. Может читать данные из HTML, XML, JSON, iCal, JS, XLSX, XLS, CSV, Google Spreadsheets.
ScrapingBee — предоставляет API для работы с Headless Chrome и позволяет сфокусироваться на обработке данных.
Scraper API — ещё один простой API с большим набором настроек: от заголовков запросов до геолокации IP.
Библиотеки для языков программирования
Python
Библиотеки на Python предоставляют множество эффективных и быстрых функций для парсинга. Многие из этих инструментов можно подключить к готовому приложению в формате API для создания настраиваемых краулеров. Все перечисленные ниже проекты имеют открытый исходный код.
BeautifulSoup
Пакет для анализа документов HTML и XML, преобразующий их в синтаксические деревья. Он использует HTML и XML-парсеры, такие как html5lib и Lxml, чтобы извлекать нужные данные.
Для поиска конкретного атрибута или текста в необработанном HTML-файле в BeautifulSoup есть удобные функции find(), find_all(), get_text() и другие. Библиотека также автоматически распознаёт кодировки.
Установить последнюю версию BeautifulSoup можно через easy_install или pip:
Selenium
Инструмент, который работает как веб-драйвер: открывает браузер, выполняет клики по элементам, заполняет формы, прокручивает страницы и многое другое. Selenium в основном используется для автоматического тестирования веб-приложений, но его вполне можно применять и для скрейпинга. Перед началом работы необходимо установить драйверы для взаимодействия с конкретным браузером, например ChromeDriver для Chrome и Safari Driver для Safari 10.
Установить Selenium можно через pip:
Lxml
Библиотека с удобными инструментами для обработки HTML и XML файлов. Работает с XML чуть быстрее, чем Beautiful Soup, при этом используя аналогичный метод создания синтаксических деревьев. Чтобы получить больше функциональности, можно объединить Lxml и Beautiful Soup, так как они совместимы друг с другом. Beautiful Soup использует Lxml как парсер.
Ключевые преимущества библиотеки — высокая скорость анализа больших документов и страниц, удобная функциональность и простое преобразование исходной информации в типы данных Python.
Установить Lxml:
JavaScript
Для JavaScript тоже можно найти готовые библиотеки для парсинга с удобными функциональными API.
Cheerio
Шустрый парсер, который создаёт DOM-дерево страницы и позволяет удобно с ним работать. Cheerio анализирует разметку и предоставляет функции для обработки полученных данных.
API Cheerio будет особенно понятен тем, кто работает с jQuery. Парсер позиционирует себя как инструмент, позволяющей сконцентрироваться на работе с данными, а не на их извлечении.
Установить Cheerio:
Osmosis
По функциональности скрейпер похож на Cheerio, но имеет куда меньше зависимостей. Osmosis написан на Node.js и поддерживает селекторы CSS 3.0 и XPath 1.0. Также он умеет загружать и искать AJAX-контент, записывать логи URL-адресов, редиректов и ошибок, заполнять формы, проходить базовую аутентификацию и многое другое.
Для наглядности можно посмотреть пример парсинга сайтов с помощью Osmosis.
Установить парсер:
Apify SDK
Библиотека Node.js, которую можно использовать вместе с Chrome Headless и Puppeteer.
Apify позволяет выполнять глубокий обход всего веб-сайта, используя очередь URL-адресов. Также с ней можно запускать код парсера для множества URL в CSV-файле, не теряя никаких данных при сбое программы.
Для безопасного скрейпинга Apify использует прокси и отключает распознавание фингерпринта браузера на веб-сайтах.
Установить Apify SDK:
Java
В Java реализованы различные инструменты и библиотеки, а также внешние API, которые можно использовать для парсинга.
Jsoup
Проект с открытым исходным кодом для извлечения и анализа данных с HTML-страниц. Основные функции в целом не отличаются от тех, что предоставляют другие парсеры. К ним относятся загрузка и анализ HTML-страниц, манипулирование HTML-элементами, поддержка прокси, работа с CSS-селекторами и прочее.
Jsoup не поддерживает парсинг на основе XPath.
Jaunt
Библиотека, которую можно использовать для извлечения данных из HTML-страниц или данных JSON с помощью headless-браузера. Jaunt может выполнять и обрабатывать отдельные HTTP-запросы и ответы, а также взаимодействовать с REST API для извлечения данных.
В целом функциональность Jaunt похож на Jsoup за исключением того, что вместо CSS-селекторов Jaunt использует собственный синтаксис.
HTMLUnit
Инфраструктура, которая позволяет моделировать события браузера, (щелчки, прокрутка, отправка форм) и поддерживает JavaScript. Это улучшает процесс автоматизации получения и обработки информации. HTMLUnit поддерживает парсинг на основе XPath, в отличие от JSoup. Ещё его можно использовать для модульного тестирования веб-приложений.
Знаете ещё примеры хороших библиотек и инструментов для скрейпинга? Поделитесь ими в комментариях.
21К открытий22К показов