Keď to rozhranie API jednoducho nepreruší, vždy sa môžete uchýliť k zoškrabávaniu HTML a Rust vám môže pomôcť.

Web scraping je populárna technika na rýchle a efektívne zhromažďovanie veľkého množstva údajov z webových stránok. Pri absencii rozhrania API môže byť ďalším najlepším prístupom zoškrabovanie webu.

Rýchlosť a bezpečnosť pamäte Rust robia jazyk ideálnym na vytváranie webových škrabiek. Rust je domovom mnohých výkonných knižníc na analýzu a extrakciu údajov a jeho robustné možnosti spracovania chýb sú užitočné pre efektívny a spoľahlivý zber webových údajov.

Zoškrabovanie webu v hrdze

Mnoho populárnych knižníc podporuje zoškrabovanie webu v Ruste, vrátane reqwest, škrabka, vyberte, a html5ever. Väčšina vývojárov Rust kombinuje funkcie z reqwest a scraper pre ich zoškrabovanie webu.

Knižnica reqwest poskytuje funkcie na vytváranie požiadaviek HTTP na webové servery. Reqwest je postavený na vstavanom zariadení Rust hyper a zároveň poskytuje vysokoúrovňové API pre štandardné funkcie HTTP.

instagram viewer

Scraper je výkonná knižnica na zoškrabovanie webu, ktorá analyzuje dokumenty HTML a XML a extrahuje údaje pomocou selektorov CSS a výrazy XPath.

Po vytvorení nového projektu Rust s náklad nový príkaz, pridajte reqwest a škrabka prepravky do sekcie závislostí vášho cargo.toml súbor:

[závislosti]
reqwest = {verzia = "0.11", funkcie = ["blokovanie"]}
škrabka = "0.12.0"

budete používať reqwest do odosielať požiadavky HTTP a škrabka na analýzu.

Načítanie webových stránok pomocou Reqwest

Pred analýzou webovej stránky na získanie konkrétnych údajov odošlete žiadosť o jej obsah.

Môžete odoslať požiadavku GET a získať zdrojový kód HTML stránky pomocou text funkcia na dostať funkciu reqwest knižnica:

fnretrieve_html() -> Reťazec {
nech odpoveď = dostať(" https://news.ycombinator.com").unwrap().text().unwrap();
vrátiť odozva;
}

The dostať funkcia odošle požiadavku na webovú stránku a text funkcia vráti text HTML.

Analýza kódu HTML pomocou nástroja Scraper

The retrieve_html funkcia vráti text HTML a budete musieť analyzovať text HTML, aby ste získali konkrétne údaje, ktoré potrebujete.

Scraper poskytuje funkcie pre interakciu s HTML v Html a Selektor modulov. The Html modul poskytuje funkcie na analýzu dokumentu a Selektor modul poskytuje funkcionalitu na výber konkrétnych prvkov z HTML.

Tu je návod, ako môžete získať všetky tituly na stránke:

použitie scraper::{Html, Selector};

fnHlavná() {
nech odpoveď = reqwest:: blocking:: get(
" https://news.ycombinator.com/").unwrap().text().unwrap();

// analyzovať HTML dokument
nech doc_body = Html:: parse_document(&response);

// vyberte prvky s triedou titleline
nech title = Selector:: parse(".titleline").rozbaliť();

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

The parse_document funkciu Html modul analyzuje HTML text a Parse funkciu Selektor modul vyberie prvky so zadaným selektorom CSS (v tomto prípade titulok trieda).

The pre slučka prechádza cez tieto prvky a z každého vytlačí prvý blok textu.

Tu je výsledok operácie:

Výber atribútov pomocou škrabky

Ak chcete vybrať hodnotu atribútu, načítajte požadované prvky ako predtým a použite attr metóda inštancie hodnoty značky:

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

fnHlavná() {
nech odpoveď = dostať(" https://news.ycombinator.com").unwrap().text().unwrap();
nech html_doc = Html:: parse_document(&response);
nech class_selector = Selektor:: parse(".titleline").rozbaliť();

pre element v html_doc.select(&class_selector) {
nech link_selector = Selektor:: parse("a").rozbaliť();

pre odkaz v element.select(&link_selector) {
aknechNiektorí(href) = link.value().attr("href") {
println!("{}", href);
}
}
}
}

Po výbere prvkov pomocou titulok triedy pomocou rozobrať funkcia, pre slučka prechádza cez ne. Vo vnútri slučky sa potom kód načíta a označí a vyberie href atribút s attr funkciu.

The Hlavná funkcia vypíše tieto odkazy s výsledkom ako je tento:

Môžete vytvárať sofistikované webové aplikácie v hrdze

Rust si v poslednej dobe získava prijatie ako jazyk pre vývoj webu od front-endu až po vývoj aplikácií na strane servera.

Webovú zostavu môžete využiť na vytváranie úplných webových aplikácií s knižnicami ako Yew a Percy alebo na vytváranie serverov aplikácie s Actix, Rocket a množstvom knižníc v ekosystéme Rust, ktoré poskytujú funkcie na vytváranie webových stránok aplikácie.