Scaricare una pagina web

Rust:
Scaricare una pagina web

How to:

Per scaricare una pagina web in Rust, useremo il pacchetto reqwest, molto popolare e con molte funzionalità. Prima di tutto, includi reqwest nel tuo Cargo.toml.

[dependencies]
reqwest = "0.11"
tokio = { version = "1", features = ["full"] }

Poi esegui il download della pagina:

use reqwest;
use tokio;

#[tokio::main]
async fn main() -> Result<(), reqwest::Error> {
    let url = "http://example.com";
    let response = reqwest::get(url).await?;

    let body = response.text().await?;
    println!("Body:\n{}", body);
    
    Ok(())
}

Esempio di output:

Body:
<!doctype html>
<html>
<head>
    <title>Example Domain</title>
    ...
</head>
...
</html>

Deep Dive

Nel passato, librerie come hyper erano il modo diretto per fare richieste HTTP in Rust. Ora, reqwest si appoggia su hyper e offre un’API più semplice. Per gestire le operazioni asincrone, tokio è il runtime più usato.

Ci sono anche alternative non asincrone come ureq se il tuo progetto non richiede asincronia. reqwest stesso supporta anche un client bloccante.

Quando scarichi una pagina, il handling degli errori e degli status HTTP è cruciale. Usa response.status() per controllare lo status e gestire diversi scenari (redirection, client error, server error).

See Also