Kun API ei vain leikkaa sitä, voit aina turvautua HTML-koodin kaappaamiseen, ja Rust voi auttaa sinua.
Web-kaappaus on suosittu tekniikka suurien tietomäärien keräämiseen verkkosivuilta nopeasti ja tehokkaasti. API: n puuttuessa verkkokaappaus voi olla seuraavaksi paras tapa.
Rustin nopeus ja muistin turvallisuus tekevät kielestä ihanteellisen verkkokaapimien rakentamiseen. Rustissa on monia tehokkaita jäsennys- ja tiedonpoimintakirjastoja, ja sen vahvat virheenkäsittelyominaisuudet ovat käteviä tehokkaaseen ja luotettavaan verkkotietojen keräämiseen.
Verkkokaapiminen ruosteessa
Monet suositut kirjastot tukevat verkkoraapimista Rustissa, mukaan lukien reqwest, kaavin, valitse, ja html5 koskaan. Useimmat Rust-kehittäjät yhdistävät verkkokaappaukseensa reqwestin ja scraperin toiminnot.
Reqwest-kirjasto tarjoaa toiminnot HTTP-pyyntöjen tekemiseen web-palvelimille. Reqwest on rakennettu Rustin sisäänrakennettuun käyttöön hyper laatikon toimittaessa korkean tason API: n tavallisille HTTP-ominaisuuksille.
Scraper on tehokas web-kaappauskirjasto, joka jäsentää HTML- ja XML-asiakirjoja ja poimii tiedot CSS-valitsimien avulla ja XPath-lausekkeet.
Kun olet luonut uuden Rust-projektin kanssa lasti uusi komento, lisää reqwest ja kaavin laatikot riippuvuudet-osioon cargo.toml tiedosto:
[riippuvuudet]
reqwest = {versio = "0.11", ominaisuuksia = ["estäminen"]}
kaavin = "0.12.0"
käytät reqwest to lähettää HTTP-pyyntöjä ja kaavin jäsentämistä varten.
Verkkosivujen haku Reqwestillä
Lähetät verkkosivun sisältöä koskevan pyynnön ennen sen jäsentämistä tiettyjen tietojen hakemiseksi.
Voit lähettää GET-pyynnön ja hakea sivun HTML-lähteen käyttämällä teksti toiminto päällä saada toiminto reqwest kirjasto:
fnretrieve_html() -> merkkijono {
antaa vastaus = get(" https://news.ycombinator.com").unwrap().text().unwrap();
palata vastaus;
}
The saada toiminto lähettää pyynnön verkkosivulle ja teksti funktio palauttaa HTML-tekstin.
HTML: n jäsentäminen Scraperillä
The retrieve_html funktio palauttaa HTML-tekstin, ja sinun on jäsennettävä HTML-teksti hakeaksesi tarvitsemasi tiedot.
Scraper tarjoaa toimintoja vuorovaikutukseen HTML: n kanssa HTML ja Valitsin moduulit. The HTML moduuli tarjoaa toiminnot asiakirjan jäsentämiseen ja Valitsin moduuli tarjoaa toiminnot tiettyjen elementtien valitsemiseen HTML: stä.
Näin voit hakea kaikki sivun otsikot:
käyttää kaavin::{HTML, valitsin};
fnpää() {
antaa vastaus = reqwest:: esto:: get(
" https://news.ycombinator.com/").unwrap().text().unwrap();// jäsentää HTML-dokumenttia
antaa doc_body = Html:: parse_document(&response);
// valitse elementit otsikkorivin luokalla
antaa title = Selector:: parse(".titleline").unwrap();
varten otsikko sisään doc_body.select(&title) {
antaa otsikot = otsikko.teksti().kerää::<Vec<_>>();
println!("{}", otsikot[0])
}
}
The parse_document toiminto HTML moduuli jäsentää HTML-tekstin ja Jäsentää toiminto Valitsin moduuli valitsee elementit määritetyllä CSS-valitsimella (tässä tapauksessa otsikkorivi luokka).
The varten silmukka kulkee näiden elementtien läpi ja tulostaa ensimmäisen tekstilohkon jokaisesta.
Tässä on operaation tulos:
Attribuuttien valitseminen Scraperillä
Voit valita määritteen arvon hakemalla tarvittavat elementit kuten aiemmin ja käyttämällä attr tagin arvoinstanssin menetelmä:
käyttää reqwest:: esto:: get;
käyttää kaavin::{HTML, valitsin};fnpää() {
antaa vastaus = get(" https://news.ycombinator.com").unwrap().text().unwrap();
antaa html_doc = Html:: parse_document(&response);
antaa class_selector = Valitsija:: parse(".titleline").unwrap();varten elementti sisään html_doc.select(&class_selector) {
antaa link_selector = Valitsija:: parse("a").unwrap();
varten linkki sisään element.select(&link_selector) {
josantaaJonkin verran(href) = link.arvo().attr("href") {
println!("{}", href);
}
}
}
}
Kun olet valinnut elementit otsikkorivi luokka käyttäen jäsentää toiminto, varten silmukka kulkee niiden läpi. Silmukan sisällä koodi haetaan sitten a merkitsee ja valitsee href attribuutti kanssa attr toiminto.
The pää toiminto tulostaa nämä linkit seuraavanlaisen tuloksen tuloksena:
Voit rakentaa kehittyneitä verkkosovelluksia Rustissa
Viime aikoina Rust on yleistynyt verkkokehityksen kielenä etupäästä palvelinpuolen sovellusten kehittämiseen.
Voit hyödyntää verkkokokoonpanoa rakentaaksesi täyden pinon verkkosovelluksia kirjastoilla, kuten Yew ja Percy, tai rakentaa palvelinpuolen sovellukset Actixin, Rocketin ja useiden Rust-ekosysteemin kirjastojen kanssa, jotka tarjoavat toimintoja verkon rakentamiseen sovellukset.