提取网络链接( 爬虫 )

从目标网页 HTML 中提取出所有链接

下面代码使用 reqwest::get 发起一次 http 请求,然后通过 select 包的 Document::from_read 将请求的结果解析为 HTML 文档。

use error_chain::error_chain;
use select::document::Document;
use select::predicate::Name;

error_chain! {
     foreign_links {
         ReqError(reqwest::Error);
         IoError(std::io::Error);
     }
}

#[tokio::main]
async fn main() -> Result<()> {
  let res = reqwest::get("https://www.rust-lang.org/en-US/")
    .await?
    .text()
    .await?;

  Document::from(res.as_str())
    .find(Name("a"))
    .filter_map(|n| n.attr("href"))
    .for_each(|x| println!("{}", x));

  Ok(())
}