Ja API to vienkārši neizgriež, jūs vienmēr varat izmantot HTML nokasīšanu, un Rust var jums palīdzēt.
Tīmekļa nokasīšana ir populārs paņēmiens lielu datu apjomu ātrai un efektīvai apkopošanai no tīmekļa lapām. Ja nav API, tīmekļa nokasīšana var būt nākamā labākā pieeja.
Rust ātrums un atmiņas drošība padara valodu par ideālu tīmekļa skrāpju veidošanai. Rust ir mājvieta daudzām jaudīgām parsēšanas un datu ieguves bibliotēkām, un tās spēcīgās kļūdu apstrādes iespējas ir ērtas efektīvai un uzticamai tīmekļa datu apkopošanai.
Tīmekļa skrāpēšana rūsā
Daudzas populāras bibliotēkas atbalsta tīmekļa skrāpēšanu Rust, tostarp reqwest, skrāpis, izvēlieties, un html5 jebkad. Lielākā daļa Rust izstrādātāju tīmekļa skrāpēšanai apvieno reqwest un skrāpja funkcionalitāti.
Reqwest bibliotēka nodrošina funkcionalitāti HTTP pieprasījumu veikšanai tīmekļa serveriem. Reqwest ir balstīts uz Rust iebūvēto hiper crate, vienlaikus nodrošinot augsta līmeņa API standarta HTTP funkcijām.
Scraper ir jaudīga tīmekļa skrāpēšanas bibliotēka, kas parsē HTML un XML dokumentus un
izvelk datus, izmantojot CSS atlasītājus un XPath izteiksmes.Pēc jauna Rust projekta izveides ar krava jauna komandu, pievienojiet reqwest un skrāpis kastes uz jūsu atkarību sadaļu kravas.toml fails:
[atkarības]
reqwest = {versija = "0.11", funkcijas = ["bloķēšana"]}
skrāpis = "0.12.0"
Jūs izmantosit reqwest uz nosūtīt HTTP pieprasījumus un skrāpis parsēšanai.
Tīmekļa lapu izgūšana, izmantojot Reqwest
Jūs nosūtīsit pieprasījumu par tīmekļa lapas saturu pirms tās parsēšanas, lai izgūtu konkrētus datus.
Varat nosūtīt GET pieprasījumu un izgūt lapas HTML avotu, izmantojot tekstu funkcija uz gūt funkcija reqwest bibliotēka:
fnizgūt_html() -> Stīga {
ļaut atbilde = saņemt (" https://news.ycombinator.com").unwrap().text().unwrap();
atgriezties atbilde;
}
The gūt funkcija nosūta pieprasījumu uz tīmekļa lapu, un tekstu funkcija atgriež HTML tekstu.
HTML parsēšana ar skrāpi
The izgūt_html funkcija atgriež HTML tekstu, un jums būs jāparsē HTML teksts, lai izgūtu konkrētos nepieciešamos datus.
Skrāpis nodrošina funkcionalitāti mijiedarbībai ar HTML HTML un Atlasītājs moduļi. The HTML modulis nodrošina funkcionalitāti dokumenta parsēšanai un Atlasītājs modulis nodrošina funkcionalitāti konkrētu elementu atlasei no HTML.
Tālāk ir norādīts, kā varat izgūt visus lapas nosaukumus.
izmantot skrāpis::{Html, atlasītājs};
fngalvenais() {
ļaut atbilde = reqwest:: bloķēšana:: get(
" https://news.ycombinator.com/").unwrap().text().unwrap();// parsēt HTML dokumentu
ļaut doc_body = Html:: parse_document(&atbilde);
// atlasiet elementus ar virsraksta rindiņas klasi
ļaut title = Selector:: parse(".titleline").unwrap();
priekš virsraksts iekšā doc_body.select(&title) {
ļaut virsraksti = title.text().collect::<Vec<_>>();
println!("{}", nosaukumi[0])
}
}
The parse_document funkcija HTML modulis parsē HTML tekstu un Parsēt funkcija Atlasītājs modulis atlasa elementus ar norādīto CSS atlasītāju (šajā gadījumā virsraksta rindiņa klase).
The priekš cilpa šķērso šos elementus un izdrukā pirmo teksta bloku no katra.
Lūk, operācijas rezultāts:
Atribūtu atlase ar skrāpi
Lai atlasītu atribūta vērtību, izgūstiet nepieciešamos elementus kā iepriekš un izmantojiet attr taga vērtības gadījuma metode:
izmantot reqwest:: bloķēšana:: get;
izmantot skrāpis::{Html, atlasītājs};fngalvenais() {
ļaut atbilde = saņemt (" https://news.ycombinator.com").unwrap().text().unwrap();
ļaut html_doc = Html:: parse_document(&atbilde);
ļaut class_selector = Atlasītājs:: parse(".titleline").unwrap();priekš elements iekšā html_doc.select(&class_selector) {
ļaut link_selector = Atlasītājs:: parse("a").unwrap();
priekš saite iekšā element.select(&link_selector) {
jaļautDažas(href) = saite.value().attr("href") {
println!("{}", href);
}
}
}
}
Pēc elementu atlases ar virsraksta rindiņa klasē, izmantojot parsēt funkcija, priekš cilpa šķērso tos. Pēc tam kods tiek ielādēts cilpas iekšpusē a atzīmē un atlasa href atribūts ar attr funkciju.
The galvenais funkcija izdrukā šīs saites ar šādu rezultātu:
Rustā varat izveidot sarežģītas tīmekļa lietojumprogrammas
Pēdējā laikā Rust ir kļuvušas arvien populārākas kā tīmekļa izstrādes valoda no priekšgala līdz servera puses lietotņu izstrādei.
Varat izmantot tīmekļa montāžu, lai izveidotu pilnas kaudzes tīmekļa lietojumprogrammas ar tādām bibliotēkām kā Yew un Percy vai izveidotu servera pusi lietojumprogrammas ar Actix, Rocket un daudzām Rust ekosistēmas bibliotēkām, kas nodrošina funkcionalitāti tīmekļa veidošanai lietojumprogrammas.