Когда API просто не подходит, вы всегда можете прибегнуть к очистке HTML, и Rust может вам помочь.
Веб-скрапинг — популярный метод быстрого и эффективного сбора больших объемов данных с веб-страниц. В отсутствие API веб-скрапинг может быть следующим лучшим подходом.
Скорость Rust и безопасность памяти делают язык идеальным для создания парсеров. Rust содержит множество мощных библиотек для синтаксического анализа и извлечения данных, а его надежные возможности обработки ошибок удобны для эффективного и надежного сбора веб-данных.
Веб-скрейпинг в Rust
Многие популярные библиотеки поддерживают веб-скрапинг в Rust, в том числе запрос, скребок, выбирать, и html5ever. Большинство разработчиков Rust сочетают функциональность reqwest и скребка для парсинга веб-страниц.
Библиотека reqwest предоставляет функциональные возможности для выполнения HTTP-запросов к веб-серверам. Reqwest построен на встроенном в Rust гипер crate, предоставляя высокоуровневый API для стандартных функций HTTP.
Scraper — это мощная библиотека веб-скрейпинга, которая анализирует документы HTML и XML и
извлекает данные с помощью селекторов 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, которые предоставляют функциональные возможности для создания веб-сайтов. Приложения.