Když to rozhraní API prostě nevyřeší, můžete se vždy uchýlit ke scrapingu HTML a Rust vám může pomoci.

Web scraping je oblíbená technika pro rychlé a efektivní shromažďování velkého množství dat z webových stránek. Při absenci API může být web scraping dalším nejlepším přístupem.

Díky rychlosti a bezpečnosti paměti Rust je jazyk ideální pro vytváření webových škrabek. Rust je domovem mnoha výkonných knihoven pro analýzu a extrakci dat a jeho robustní možnosti zpracování chyb jsou užitečné pro efektivní a spolehlivý sběr webových dat.

Web škrábání v rezu

Mnoho populárních knihoven podporuje web scraping v Rustu, včetně reqwest, škrabka, vybrat, a html5ever. Většina vývojářů Rust kombinuje funkce z reqwest a scraper pro jejich web scraping.

Knihovna reqwest poskytuje funkce pro vytváření požadavků HTTP na webové servery. Reqwest je postaven na vestavbě Rust hyper crate a zároveň poskytuje rozhraní API na vysoké úrovni pro standardní funkce HTTP.

Scraper je výkonná knihovna pro stírání webu, která analyzuje dokumenty HTML a XML extrahuje data pomocí CSS selektorů a výrazy XPath.

instagram viewer

Po vytvoření nového projektu Rust s náklad nový příkaz, přidejte reqwest a škrabka bedny do sekce závislostí vašeho cargo.toml soubor:

[závislosti]
reqwest = {verze = "0.11", vlastnosti = ["blokování"]}
škrabka = "0.12.0"

budete používat reqwest na odesílat požadavky HTTP a škrabka pro analýzu.

Načítání webových stránek pomocí Reqwest

Před analýzou za účelem získání konkrétních dat odešlete požadavek na obsah webové stránky.

Můžete odeslat požadavek GET a načíst zdrojový kód HTML stránky pomocí text funkce na dostat funkce reqwest knihovna:

fnnačíst_html() -> Tětiva {
nechat odpověď = dostat(" https://news.ycombinator.com").unwrap().text().unwrap();
vrátit se Odezva;
}

The dostat funkce odešle požadavek na webovou stránku a text funkce vrací text HTML.

Analýza HTML pomocí škrabky

The načíst_html Funkce vrací text HTML a budete muset analyzovat text HTML, abyste získali konkrétní data, která potřebujete.

Scraper poskytuje funkce pro interakci s HTML v Html a Volič moduly. The Html modul poskytuje funkce pro analýzu dokumentu a Volič modul poskytuje funkce pro výběr konkrétních prvků z HTML.

Zde je návod, jak můžete načíst všechny tituly na stránce:

použití scraper::{Html, Selector};

fnhlavní() {
nechat odpověď = reqwest:: blocking:: get(
" https://news.ycombinator.com/").unwrap().text().unwrap();

// analyzovat HTML dokument
nechat doc_body = Html:: parse_document(&response);

// vyberte prvky s třídou titleline
nechat title = Selector:: parse(".titleline").rozbalit();

pro titul v doc_body.select(&title) {
nechat titles = title.text().collect::<Vec<_>>();
println!("{}", tituly[0])
}
}

The parse_document funkce Html modul analyzuje text HTML a Analyzovat funkce Volič modul vybere prvky se zadaným selektorem CSS (v tomto případě titulek třída).

The pro smyčka prochází těmito prvky a vytiskne první blok textu z každého.

Zde je výsledek operace:

Výběr atributů pomocí škrabky

Chcete-li vybrat hodnotu atributu, načtěte požadované prvky jako dříve a použijte attr metoda instance hodnoty značky:

použití reqwest:: blocking:: get;
použití scraper::{Html, Selector};

fnhlavní() {
nechat odpověď = dostat(" https://news.ycombinator.com").unwrap().text().unwrap();
nechat html_doc = Html:: parse_document(&response);
nechat class_selector = Selektor:: parse(".titleline").rozbalit();

pro živel v html_doc.select(&class_selector) {
nechat link_selector = Selektor:: parse("A").rozbalit();

pro odkaz v element.select(&link_selector) {
-linechatNějaký(href) = link.value().attr("href") {
println!("{}", href);
}
}
}
}

Po výběru prvků pomocí titulek třídy pomocí rozebrat funkce, pro smyčka jimi prochází. Uvnitř smyčky se pak kód načte A označí a vybere href atribut s attr funkce.

The hlavní funkce vytiskne tyto odkazy s výsledkem, jako je tento:

Můžete vytvářet sofistikované webové aplikace v Rustu

Rust si v poslední době získává přijetí jako jazyk pro vývoj webu od front-endu až po vývoj aplikací na straně serveru.

Webové sestavení můžete využít k vytváření kompletních webových aplikací s knihovnami jako Yew a Percy nebo k vytváření na straně serveru aplikací s Actix, Rocket a řadou knihoven v ekosystému Rust, které poskytují funkce pro vytváření webových aplikací.