Rust reqwest:如何等到页面完全加载?
Rust reqwest: how to wait until the page is fully loaded?
我正在尝试获取一个带有 reqwest 库的网站。
问题是一些网站将在几毫秒或大约一秒内完全呈现。 (比如 table 元素在 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?;
或者像 selenium 一样,等到元素是 visible/shown?
所以我想等一个特定的时间,但我不确定是否有办法。
在 res
之后尝试了 tokio::time::sleep
,但显然这不是解决方案。
(超时,connect_timeout 没有任何影响)
Reqwest 不会这样做,它只会在给定的 URL 处加载数据,仅此而已。您要求的是浏览器在加载网页时显示的内容,其中包括加载其他资产、嵌入页面、运行 脚本等
您需要 full-on 浏览器才能获得此功能,这需要 web-driver(如 selenium)。只是四处寻找 Rust 解决方案,也许 fantoccini
or chromiumoxide
or headless_chrome
会引起您的兴趣。
我正在尝试获取一个带有 reqwest 库的网站。
问题是一些网站将在几毫秒或大约一秒内完全呈现。 (比如 table 元素在 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?;
或者像 selenium 一样,等到元素是 visible/shown?
所以我想等一个特定的时间,但我不确定是否有办法。
在 res
之后尝试了 tokio::time::sleep
,但显然这不是解决方案。
(超时,connect_timeout 没有任何影响)
Reqwest 不会这样做,它只会在给定的 URL 处加载数据,仅此而已。您要求的是浏览器在加载网页时显示的内容,其中包括加载其他资产、嵌入页面、运行 脚本等
您需要 full-on 浏览器才能获得此功能,这需要 web-driver(如 selenium)。只是四处寻找 Rust 解决方案,也许 fantoccini
or chromiumoxide
or headless_chrome
会引起您的兴趣。