Kui API lihtsalt ei lõika seda, võite alati kasutada HTML-i kraapimist ja Rust saab teid aidata.

Veebikraapimine on populaarne tehnika veebilehtedelt suure andmemahu kiireks ja tõhusaks kogumiseks. API puudumisel võib veebikraapimine olla parim viis.

Rooste kiirus ja mäluohutus muudavad keele veebikaabitsate ehitamiseks ideaalseks. Rust on koduks paljudele võimsatele sõelumis- ja andmete eraldamise teekidele ning selle tugevad veakäsitlusvõimalused on tõhusaks ja usaldusväärseks veebiandmete kogumiseks mugavad.

Veebi kraapimine roostes

Paljud populaarsed raamatukogud toetavad veebikraapimist Rustis, sealhulgas reqwest, kaabits, valija html5 kunagi. Enamik Rusti arendajaid ühendab oma veebikraapimiseks reqwesti ja scraperi funktsioonid.

Reqwesti teek pakub funktsioone HTTP-päringute tegemiseks veebiserveritele. Reqwest on üles ehitatud Rusti sisseehitatud süsteemile hüper kasti, pakkudes samal ajal kõrgetasemelist API-d standardsete HTTP-funktsioonide jaoks.

Scraper on võimas veebikraapimisteek, mis analüüsib HTML- ja XML-dokumente ning

instagram viewer
eraldab andmed CSS-i valijate abil ja XPath avaldised.

Pärast uue Rusti projekti loomist rakendusega lasti uus käsk, lisage reqwest ja kaabits kastid oma sõltuvuste jaotisesse lasti.toml fail:

[sõltuvused]
reqwest = {versioon = "0.11", funktsioonid = ["blokeerimine"]}
kaabits = "0.12.0"

Sa kasutad reqwest juurde saata HTTP-päringuid ja kaabits sõelumiseks.

Veebilehtede allalaadimine Reqwestiga

Enne selle sõelumist konkreetsete andmete toomiseks saadate päringu veebilehe sisu kohta.

Saate saata GET-päringu ja hankida lehe HTML-i allika, kasutades tekst funktsioon peal saada funktsioon reqwest raamatukogu:

fnretrieve_html() -> String {
lase vastus = saada(" https://news.ycombinator.com").unwrap().text().unwrap();
tagasi vastus;
}

The saada funktsioon saadab päringu veebilehele ja tekst funktsioon tagastab HTML-i teksti.

HTML-i sõelumine kaabitsaga

The retrieve_html funktsioon tagastab HTML-i teksti ja konkreetsete vajalike andmete hankimiseks peate HTML-teksti sõeluma.

Scraper pakub funktsioone HTML-iga suhtlemiseks HTML ja Valija moodulid. The HTML moodul pakub funktsioone dokumendi sõelumiseks ja Valija moodul pakub funktsioone HTML-ist konkreetsete elementide valimiseks.

Lehe kõigi pealkirjade hankimiseks tehke järgmist.

kasutada kaabits::{HTML, valija};

fnpeamine() {
lase vastus = reqwest:: blokeerimine:: get(
" https://news.ycombinator.com/").unwrap().text().unwrap();

// sõeluvad HTML-dokumendi
lase doc_body = Html:: parse_document(&response);

// valib pealkirjarea klassiga elemendid
lase title = Valija:: parse(".titleline").unwrap();

jaoks pealkiri sisse doc_body.select(&title) {
lase pealkirjad = pealkiri.tekst().koguda::<Vec<_>>();
println!("{}", pealkirjad[0])
}
}

The parse_document funktsioon HTML moodul parsib HTML-teksti ja Parse funktsioon Valija moodul valib elemendid määratud CSS-valijaga (antud juhul pealkiri klass).

The jaoks silmus läbib need elemendid ja prindib igaühest esimese tekstiploki.

Siin on operatsiooni tulemus:

Atribuutide valimine kaabitsaga

Atribuudi väärtuse valimiseks hankige vajalikud elemendid nagu varem ja kasutage attr märgendi väärtuse eksemplari meetod:

kasutada reqwest:: blokeerimine:: saada;
kasutada kaabits::{HTML, valija};

fnpeamine() {
lase vastus = saada(" https://news.ycombinator.com").unwrap().text().unwrap();
lase html_doc = Html:: parse_document(&response);
lase class_selector = Valija:: parse(".titleline").unwrap();

jaoks element sisse html_doc.select(&class_selector) {
lase link_selector = Valija:: parse("a").unwrap();

jaoks link sisse element.select(&link_selector) {
kuilaseMõned(href) = link.value().attr("href") {
println!("{}", href);
}
}
}
}

Pärast elementide valimist nupuga pealkiri klassi kasutades sõeluda funktsioon, jaoks silmus neid läbib. Seejärel hangitakse kood silmuse sees a märgistab ja valib href atribuut koos attr funktsiooni.

The peamine funktsioon prindib need lingid sellise tulemusega:

Saate Rustis luua keerukaid veebirakendusi

Viimasel ajal on Rust hakanud kasutusele võtma veebiarenduse keele alates esiotsast kuni serveripoolse rakenduste arenduseni.

Saate kasutada veebikomplekti, et luua täisvirna veebirakendusi selliste teekide abil nagu Yew ja Percy või ehitada serveripoolne rakendused Actixi, Rocketiga ja paljude Rusti ökosüsteemi raamatukogudega, mis pakuvad funktsioone veebi loomiseks rakendusi.