Rust reqwest:如何等待页面完全加载?

alf*_*936 2 rust

我正在尝试使用 reqwest 库获取一个网站。

问题是某些网站将在几毫秒或大约一秒内完全呈现。 (就像html渲染后加载表格元素一样)

let client = reqwest::Client::builder()
    .danger_accept_invalid_certs(true)
    .timeout(Duration::from_secs(5))
    .connect_timeout(Duration::from_secs(2))
    .user_agent("User-Agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36")
    .build()?;

let res = client.get(PROBLEM_WEBSITE).send().await?;

let body = res.text().await?;
Run Code Online (Sandbox Code Playgroud)

或者像硒一样,等到元素可见/显示?

所以我想等待一个特定的时间,但我不确定是否有办法。

tokio::time::sleep之后尝试过res,但显然这不是解决方案。

(超时,connect_timeout没有影响任何事情)

kmd*_*eko 5

Reqwest 不执行此操作,它仅加载给定 URL 处的数据,仅此而已。您要求的是浏览器在加载网页时显示的内容,其中包括加载其他资源、嵌入页面、运行脚本等。

您需要一个功能齐全的浏览器才能获得此功能,这将需要一个网络驱动程序(例如 selenium)。只是四处寻找 Rust 解决方案,也许fantoccini或者chromiumoxide或者headless_chrome符合您的喜好。