Kai API tiesiog jo neiškirps, visada galite išgryninti HTML, o „Rust“ gali jums padėti.

Žiniatinklio rinkimas yra populiarus būdas greitai ir efektyviai surinkti didelius duomenų kiekius iš tinklalapių. Jei nėra API, žiniatinklio rinkimas gali būti kitas geriausias būdas.

Rust greitis ir atminties sauga daro kalbą idealią kuriant žiniatinklio grandiklius. Rust yra daugybė galingų analizavimo ir duomenų išgavimo bibliotekų, o jos patikimos klaidų apdorojimo galimybės yra patogios efektyviam ir patikimam žiniatinklio duomenų rinkimui.

Tinklo grandymas rūdyje

Daugelis populiarių bibliotekų palaiko žiniatinklio išgryninimą Rust, įskaitant reqwest, grandiklis, pasirinkite, ir html5 kada nors. Dauguma „Rust“ kūrėjų savo žiniatinklio grandinimui derina „reqwest“ ir „skraper“ funkcijas.

Reqwest biblioteka teikia HTTP užklausų žiniatinklio serveriams funkcionalumą. „Reqwest“ sukurtas naudojant „Rust“ įmontuotą hiper dėžę, o aukšto lygio API standartinėms HTTP funkcijoms.

Scraper yra galinga žiniatinklio grandymo biblioteka, kuri analizuoja HTML ir XML dokumentus ir

instagram viewer
ištraukia duomenis naudodamas CSS selektorius ir XPath išraiškos.

Sukūrę naują Rust projektą su krovinys naujas komandą, pridėkite reqwest ir grandiklis dėžes į priklausomybių skyrių krovinys.toml failas:

[priklausomybės]
reqwest = {versija = "0.11", funkcijos = ["blokavimas"]}
grandiklis = "0.12.0"

Jūs naudosite reqwest į siųsti HTTP užklausas ir grandiklis analizavimui.

Tinklalapių gavimas naudojant „Reqwest“.

Prieš analizuodami tinklalapio turinį, norėdami gauti konkrečius duomenis, išsiųsite užklausą.

Galite išsiųsti GET užklausą ir gauti puslapio HTML šaltinį naudodami tekstą funkcija ant gauti funkcija reqwest biblioteka:

fngauti_html() -> Styga {
leisti atsakymas = gauti (" https://news.ycombinator.com".unwrap().text().unwrap();
grąžinti atsakas;
}

The gauti funkcija siunčia užklausą į tinklalapį ir tekstą funkcija grąžina HTML tekstą.

HTML analizavimas naudojant grandiklį

The gauti_html funkcija grąžina HTML tekstą, o jums reikės išanalizuoti HTML tekstą, kad gautumėte konkrečius jums reikalingus duomenis.

Scraper suteikia galimybę bendrauti su HTML HTML ir Rinkiklis moduliai. The HTML modulis suteikia galimybę analizuoti dokumentą ir Rinkiklis modulis suteikia galimybę pasirinkti konkrečius elementus iš HTML.

Štai kaip galite gauti visus puslapio pavadinimus:

naudoti grandiklis::{HTML, parinkiklis};

fnpagrindinis() {
leisti atsakymas = reqwest:: blokavimas:: get(
" https://news.ycombinator.com/".unwrap().text().unwrap();

// išanalizuoti HTML dokumentą
leisti doc_body = Html:: parse_document(&atsakymas);

// pasirinkite elementus su pavadinimo eilutės klase
leisti title = Selector:: parse(".titleline").išvynioti();

dėl titulą in doc_body.select(&title) {
leisti pavadinimai = pavadinimas.tekstas().rinkti::<Sen<_>>();
println!("{}", titulai[0])
}
}

The parse_document funkcija HTML modulis analizuoja HTML tekstą ir Išanalizuoti funkcija Rinkiklis modulis parenka elementus nurodytu CSS parinkikliu (šiuo atveju pavadinimo eilutė klasė).

The dėl kilpa eina per šiuos elementus ir iš kiekvieno išspausdina pirmąjį teksto bloką.

Štai operacijos rezultatas:

Atributų pasirinkimas naudojant grandiklį

Norėdami pasirinkti atributo reikšmę, kaip anksčiau gaukite reikiamus elementus ir naudokite attr žymos vertės egzemplioriaus metodas:

naudoti reqwest:: blokavimas:: gauti;
naudoti grandiklis::{HTML, parinkiklis};

fnpagrindinis() {
leisti atsakymas = gauti (" https://news.ycombinator.com".unwrap().text().unwrap();
leisti html_doc = Html:: parse_document(&atsakymas);
leisti class_selector = parinkiklis:: parse(".titleline").išvynioti();

dėl elementas in html_doc.select(&class_selector) {
leisti link_selector = Selector:: parse("a").išvynioti();

dėl nuoroda in element.select(&link_selector) {
jeiguleistiKai kurie(href) = link.value().attr("href") {
println!("{}", href);
}
}
}
}

Pasirinkę elementus su pavadinimo eilutė klasė naudojant analizuoti funkcija, dėl kilpa juos kerta. Tada kodas paimamas ciklo viduje a pažymi ir pasirenka href atributas su attr funkcija.

The pagrindinis funkcija išspausdina šias nuorodas su tokiu rezultatu:

Rust galite kurti sudėtingas žiniatinklio programas

Pastaruoju metu Rust vis labiau populiarėja kaip žiniatinklio kūrimo kalba nuo priekinės iki serverio pusės programų kūrimo.

Galite pasinaudoti žiniatinklio surinkimu kurdami visas žiniatinklio programas su bibliotekomis, pvz., Yew ir Percy, arba kurdami serverio pusę programos su Actix, Rocket ir daugybe bibliotekų Rust ekosistemoje, kurios teikia žiniatinklio kūrimo funkcijas programos.