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.
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.