# 提取网络链接( 爬虫 )

### 从目标网页 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(())
    }