Когда API просто не подходит, вы всегда можете прибегнуть к очистке HTML, и Rust может вам помочь.

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

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

Веб-скрейпинг в Rust

Многие популярные библиотеки поддерживают веб-скрапинг в Rust, в том числе запрос, скребок, выбирать, и html5ever. Большинство разработчиков Rust сочетают функциональность reqwest и скребка для парсинга веб-страниц.

Библиотека reqwest предоставляет функциональные возможности для выполнения HTTP-запросов к веб-серверам. Reqwest построен на встроенном в Rust гипер crate, предоставляя высокоуровневый API для стандартных функций HTTP.

Scraper — это мощная библиотека веб-скрейпинга, которая анализирует документы HTML и XML и

instagram viewer
извлекает данные с помощью селекторов CSS и выражения XPath.

После создания нового проекта Rust с груз новый команда, добавьте запрос и скребок ящики в раздел зависимостей вашего груз.томл файл:

[зависимости]
запрос = {версия = "0.11", функции = ["блокировка"]}
скребок = "0.12.0"

Вы будете использовать запрос к отправлять HTTP-запросы и скребок для разбора.

Получение веб-страниц с помощью Reqwest

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

Вы можете отправить запрос GET и получить исходный HTML-код страницы, используя текст функция на получать функция запрос библиотека:

фнполучить_html() -> Нить {
позволять ответ = получить(" https://news.ycombinator.com").развернуть().текст().развернуть();
возвращаться ответ;
}

получать функция отправляет запрос на веб-страницу, а текст Функция возвращает текст HTML.

Парсинг HTML с помощью Scraper

получить_html Функция возвращает текст HTML, и вам нужно проанализировать текст HTML, чтобы получить определенные данные, которые вам нужны.

Scraper предоставляет функциональные возможности для взаимодействия с HTML в HTML и Селектор модули. HTML Модуль предоставляет функциональные возможности для разбора документа, а Селектор Модуль предоставляет функциональные возможности для выбора определенных элементов из HTML.

Вот как вы можете получить все заголовки на странице:

использовать скребок::{Html, Селектор};

фносновной() {
позволять ответ = reqwest:: blocking:: get(
" https://news.ycombinator.com/").развернуть().текст().развернуть();

// разбираем HTML-документ
позволять doc_body = Html:: parse_document(&response);

// выбираем элементы с классом titleline
позволять title = Селектор:: разбор(".titleline").развернуть();

для заголовок в doc_body.select(&название) {
позволять заголовки = title.text().collect::<Век<_>>();
распечатать!("{}", названия[0])
}
}

parse_document функция HTML модуль анализирует текст HTML, а Разобрать функция Селектор модуль выбирает элементы с указанным селектором CSS (в данном случае заголовок сорт).

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

Вот результат операции:

Выбор атрибутов с помощью Scraper

Чтобы выбрать значение атрибута, извлеките необходимые элементы, как и раньше, и используйте атрибут метод экземпляра значения тега:

использовать reqwest:: blocking:: get;
использовать скребок::{Html, Селектор};

фносновной() {
позволять ответ = получить(" https://news.ycombinator.com").развернуть().текст().развернуть();
позволять html_doc = Html:: parse_document(&response);
позволять class_selector = Селектор:: разбор(".titleline").развернуть();

для элемент в html_doc.select(&class_selector) {
позволять link_selector = Селектор:: разбор("а").развернуть();

для связь в element.select(&link_selector) {
еслипозволятьНекоторый(href) = ссылка.значение().атрибут("ссылка") {
распечатать!("{}", ссылка);
}
}
}
}

После выбора элементов с заголовок класс, используя разобрать функция, для петля проходит через них. Затем внутри цикла код получает а теги и выбирает href атрибут с атрибут функция.

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

Вы можете создавать сложные веб-приложения на Rust

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

Вы можете использовать веб-сборку для создания полнофункциональных веб-приложений с такими библиотеками, как Yew и Percy, или для создания серверной части. приложений с Actix, Rocket и множеством библиотек в экосистеме Rust, которые предоставляют функциональные возможности для создания веб-сайтов. Приложения.