如何将网站内容下载为字符串?

时间:2018-10-24 03:14:19

标签: rust

我只想下载一个网站并将其内容放入String

类似于在C#中的完成方式:

WebClient c = new WebClient();
string ex = c.DownloadString("http://url.com");

1 个答案:

答案 0 :(得分:5)

Rust在标准库中没有没有HTTP功能,因此您可能希望使用其他板条箱(库)为您处理HTTP内容。有几个不同的板条箱用于此目的。


reqwest:“高级HTTP客户端库”

let body = reqwest::get("http://url.com")?.text()?;

chttp:“有趣的实用HTTP客户端。”

let mut response = chttp::get("http://url.com").unwrap();
let body = response.body_mut().text().unwrap();

ureq:“最小HTTP请求库”

let body = ureq::get("http://url.com")
    .call()
    .into_string()
    .unwrap();

curl:“与libcurl绑定以发出HTTP请求”

use curl::easy::Easy;

// First write everything into a `Vec<u8>`
let mut data = Vec::new();
let mut handle = Easy::new();
handle.url("http://url.com").unwrap();
{
    let mut transfer = handle.transfer();
    transfer.write_function(|new_data| {
        data.extend_from_slice(new_data);
        Ok(new_data.len())
    }).unwrap();
    transfer.perform().unwrap();
}

// Convert it to `String`
let body = String::from_utf8(data).expect("body is not valid UTF8!");

hyper

Hyper是一个非常流行的HTTP库,但是它是异步的并且相当底层。这使得小脚本难以使用。但是,如果要编写HTTP服务器,则必须使用Hyper(当然)(这就是大多数Rust Web Framework使用Hyper的原因)。

还有许多人!

我无法在此答案中列出所有可用的库。因此,随时可以在crates.io上搜索更多可以帮助您的箱子。