Инструменты и библиотеки для веб-скрейпинга

0
467
views
Photo by Javier Peñas on Unsplash

Собирать данные с веб-сайтов (то есть заниматься веб-скрейпингом) можно либо через готовый API, либо путём парсинга, — пишет Мария Багулина в своей статье на tproger.ru. Самостоятельно парсить страницы не всегда просто: многие сайты не любят скрейперов и стараются блокировать их. В этой статье мы рассмотрим готовые инструменты для парсинга, среди которых наиболее популярные онлайн-сервисы и библиотеки для языков 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:

easy_install beautifulsoup4
pip install beautifulsoup4

Selenium

Инструмент, который работает как веб-драйвер: открывает браузер, выполняет клики по элементам, заполняет формы, прокручивает страницы и многое другое. Selenium в основном используется для автоматического тестирования веб-приложений, но его вполне можно применять и для скрейпинга. Перед началом работы необходимо установить драйверы для взаимодействия с конкретным браузером, например ChromeDriver для Chrome и Safari Driver для Safari 10.

Установить Selenium можно через pip:

pip install selenium

Lxml

Библиотека с удобными инструментами для обработки HTML и XML файлов. Работает с XML чуть быстрее, чем Beautiful Soup, при этом используя аналогичный метод создания синтаксических деревьев. Чтобы получить больше функциональности, можно объединить Lxml и Beautiful Soup, так как они совместимы друг с другом. Beautiful Soup использует Lxml как парсер.

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

Установить Lxml:

pip install lxml
Photo by Dries Augustyns on Unsplash

JavaScript

Для JavaScript тоже можно найти готовые библиотеки для парсинга с удобными функциональными API.

Cheerio

Шустрый парсер, который создаёт DOM-дерево страницы и позволяет удобно с ним работать. Cheerio анализирует разметку и предоставляет функции для обработки полученных данных.

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

Установить Cheerio:

npm install cheerio 

Osmosis

По функциональности скрейпер похож на Cheerio, но имеет куда меньше зависимостей. Osmosis написан на Node.js и поддерживает селекторы CSS 3.0 и XPath 1.0. Также он умеет загружать и искать AJAX-контент, записывать логи URL-адресов, редиректов и ошибок, заполнять формы, проходить базовую аутентификацию и многое другое.

Для наглядности можно посмотреть пример парсинга сайтов с помощью Osmosis.

Установить парсер:

npm install osmosis

Apify SDK

Библиотека Node.js, которую можно использовать вместе с Chrome Headless и Puppeteer.

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

Для безопасного скрейпинга Apify использует прокси и отключает распознавание фингерпринта браузера на веб-сайтах.

Установить Apify SDK:

npm install apify

Java

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

Jsoup

Проект с открытым исходным кодом для извлечения и анализа данных с HTML-страниц. Основные функции в целом не отличаются от тех, что предоставляют другие парсеры. К ним относятся загрузка и анализ HTML-страниц, манипулирование HTML-элементами, поддержка прокси, работа с CSS-селекторами и прочее.

Jsoup не поддерживает парсинг на основе XPath.

Загрузить Jsoup

Jaunt

Библиотека, которую можно использовать для извлечения данных из HTML-страниц или данных JSON с помощью headless-браузера. Jaunt может выполнять и обрабатывать отдельные HTTP-запросы и ответы, а также взаимодействовать с REST API для извлечения данных.

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

Загрузить Jaunt

HTMLUnit

Инфраструктура, которая позволяет моделировать события браузера, (щелчки, прокрутка, отправка форм) и поддерживает JavaScript. Это улучшает процесс автоматизации получения и обработки информации. HTMLUnit поддерживает парсинг на основе XPath, в отличие от JSoup. Ещё его можно использовать для модульного тестирования веб-приложений.

Загрузить HTMLUnit

Знаете ещё примеры хороших библиотек и инструментов для скрейпинга? Поделитесь ими в комментариях.

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here