Ha egy API nem vágja le, mindig folyamodhat a HTML kikaparásához, és a Rust segíthet.
A webkaparás egy népszerű technika nagy mennyiségű adat gyors és hatékony összegyűjtésére a weboldalakról. API hiányában a webkaparás lehet a következő legjobb megközelítés.
A Rust sebessége és memóriabiztonsága ideálissá teszi a nyelvet a webkaparók készítéséhez. A Rust számos hatékony elemző és adatkinyerési könyvtárnak ad otthont, robusztus hibakezelési képességei pedig hasznosak a hatékony és megbízható webes adatgyűjtéshez.
Webkaparás rozsdában
Sok népszerű könyvtár támogatja a webkaparást Rustban, beleértve reqwest, kaparó, válassza ki, és html5ever. A legtöbb Rust fejlesztő a reqwest és a scraper funkcióit kombinálja webkaparásához.
A reqwest könyvtár funkcionalitást biztosít HTTP-kérések webszerverekhez történő küldéséhez. A Reqwest a Rust beépített elemére épül hiper láda, miközben magas szintű API-t biztosít a szabványos HTTP-funkciókhoz.
A Scraper egy hatékony webkaparó könyvtár, amely elemzi a HTML és XML dokumentumokat és adatok kinyerése CSS-szelektorok segítségével és XPath kifejezések.
Miután létrehozott egy új Rust projektet a rakomány új parancsot, adja hozzá a reqwest és kaparó ládák a függőségek részébe rakomány.toml fájl:
[függőségek]
reqwest = {verzió = "0.11", funkciók = ["blokkolás"]}
kaparó = "0.12.0"
fogod használni reqwest nak nek HTTP kérések küldése és kaparó az elemzéshez.
Weboldalak lekérése a Reqwest segítségével
Kérelmet kell küldenie a weboldal tartalmára vonatkozóan, mielőtt elemzi azt konkrét adatok lekérése érdekében.
GET kérést küldhet, és lekérheti egy oldal HTML-forrását a következővel szöveg funkció a kap funkciója reqwest könyvtár:
fnretrieve_html() -> Húr {
hagyja válasz = get(" https://news.ycombinator.com").unwrap().text().unwrap();
Visszatérés válasz;
}
A kap funkció elküldi a kérést a weboldalnak, és a szöveg függvény a HTML szövegét adja vissza.
HTML elemzése kaparóval
A retrieve_html függvény visszaadja a HTML szövegét, és a HTML-szöveget elemeznie kell a szükséges adatok lekéréséhez.
A Scraper funkcionalitást biztosít a HTML-lel való interakcióhoz HTML és Választó modulok. A HTML modul funkciót biztosít a dokumentum elemzéséhez, és a Választó A modul lehetőséget biztosít bizonyos elemek kiválasztására a HTML-ből.
A következőképpen kérheti le az oldal összes címét:
használat kaparó::{HTML, Selector};
fnfő-() {
hagyja válasz = reqwest:: blokkolás:: get(
" https://news.ycombinator.com/").unwrap().text().unwrap();// elemzi a HTML dokumentumot
hagyja doc_body = Html:: parse_document(&response);
// válassza ki az elemeket a címsor osztályával
hagyja title = Selector:: parse(".titleline").kibont();
számára cím ban ben doc_body.select(&title) {
hagyja címek = title.text().collect::<Vec<_>>();
println!("{}", címek[0])
}
}
A parse_document funkciója HTML modul elemzi a HTML szöveget, és a Elemzés funkciója Választó modul kiválasztja az elemeket a megadott CSS-szelektorral (ebben az esetben a címsor osztály).
A számára ciklus áthalad ezeken az elemeken, és mindegyikből kiírja az első szövegblokkot.
Íme a művelet eredménye:
Attribútumok kiválasztása kaparóval
Az attribútumérték kiválasztásához az előzőek szerint kérje le a szükséges elemeket, és használja a attr a címke értékpéldányának metódusa:
használat reqwest:: blokkolás:: get;
használat kaparó::{HTML, Selector};fnfő-() {
hagyja válasz = get(" https://news.ycombinator.com").unwrap().text().unwrap();
hagyja html_doc = Html:: parse_document(&response);
hagyja class_selector = Selector:: parse(".titleline").kibont();számára elem ban ben html_doc.select(&class_selector) {
hagyja link_selector = Selector:: parse("a").kibont();
számára link ban ben element.select(&link_selector) {
hahagyjaNéhány(href) = link.value().attr("href") {
println!("{}", href);
}
}
}
}
Miután kiválasztotta az elemeket a címsor osztály segítségével a elemezni funkció, a számára hurok áthalad rajtuk. A cikluson belül a kód lekérésre kerül a címkéket és kiválasztja a href attribútum a attr funkció.
A fő- függvény kinyomtatja ezeket a hivatkozásokat, a következő eredménnyel:
Kifinomult webalkalmazásokat készíthet Rustban
A közelmúltban a Rust egyre inkább elterjedt a webfejlesztés nyelveként az előtértől a szerveroldali alkalmazásfejlesztésig.
Használhatja a webes összeállítást teljes veremű webalkalmazások létrehozásához olyan könyvtárakkal, mint a Yew és Percy, vagy szerveroldali építéssel alkalmazások az Actix-szel, a Rocket-tel és a Rust ökoszisztéma számos könyvtárával, amelyek funkcionalitást biztosítanak a webépítéshez alkalmazások.