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.

instagram viewer

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.