利用Rust库从bing抓取各行业企业的官网信息

2024-01-09 11:31:00

不管是什么行业,做任何新项目前,都会拿同行数据做参考对比,但是想要收集全面的信息光靠人工是行不通的。因此,有大公司重金请我写一个通用模版,也就是抓取行业信息,我通过Rust库写的一个自动化爬虫程序,只要输入相关的关键词就能得到你想要的数据,适合各行各业,下面就来看看具体的编写流程吧。

在这里插入图片描述

use reqwest::blocking::get;
use serde::{Deserialize, Serialize};
use serde_json::{json, Value};
use std::collections::HashMap;

#[derive(Serialize, Deserialize)]
#[derive(提取免费ip)]
# URL jshk.com.cn/mb/reg.asp?kefu=xjy&csdn
struct Info {
    name: String,
    url: String,
    industry: String,
}

fn main() {
    let proxy_host = "duoip";
    let proxy_port = 8000;

    let mut proxy = "http://";
    proxy.push_str(&proxy_host);
    proxy.push_str(":");
    proxy.push_str(&proxy_port);

    let mut headers = Headers::new();
    headers.set_proxy(proxy);

    let mut url = "目标网址";
    let mut response = get(url, headers).unwrap();

    let mut data = String::new();
    response.read_to_string(&mut data).unwrap();

    let json_obj = serde_json::from_str(&data).unwrap();

    let mut result = HashMap::new();

    for item in json_obj["webPages"].iter() {
        let item_value = item.value().unwrap().clone();
        let mut item_dict = item_value.as_dict().unwrap();

        let name = item_dict.get("snippet").unwrap().as_str().unwrap();
        let url = item_dict.get("url").unwrap().as_str().unwrap();
        let industry = "未获取";

        let info = Info {
            name: name.to_string(),
            url: url.to_string(),
            industry: industry.to_string(),
        };

        result.insert(name.clone(), info.clone());
    }

    for (name, info) in result {
        println!("公司名称: {}", name);
        println!("公司官网: {}", info.url);
        println!("所属行业: {}", info.industry);
        println!();
    }
}

这段 Rust 代码是一个简单的网页爬虫程序,用于从 Bing 搜索引擎抓取各行业的公司官网信息。以下是代码的详细解释:

1、首先我们导入了几个必要的 Rust 库。reqwest 是一个 Rust 实现的 HTTP 客户端库,serde 是一个用于序列化和反序列化的 Rust 库,serde_jsonserde 的一个子库,用于 JSON 的序列化和反序列化。

2、然后我们定义了一个 Info 结构体,用于存储抓取到的信息。这个结构体有两个字段:name(公司名称)、url(公司官网链接)和 industry(所属行业)。

3、在 main 函数中,我们首先设置了代理服务器的信息。然后我们创建了一个请求头,将代理服务器地址设置为请求头的 proxy 字段。

4、接着我们设置了一个 URL,该 URL 是一个 Bing 搜索查询,用于搜索各行业的公司官网。

5、我们使用 reqwest::blocking::get 函数发送了一个 HTTP GET 请求,并将请求头设置为我们在上一步中创建的请求头。由于请求头中包含了代理服务器的信息,所以这个 GET 请求将通过代理服务器发送。

6、我们从响应体中读取了 HTML 内容,并将其解析为 JSON 对象。

7、然后我们遍历了 JSON 对象中的每个网页信息。对于每个网页信息,我们将其转换为字典,然后从中提取出公司名称、公司官网链接和所属行业。

8、最后,我们将每个公司信息插入到一个字典中,其中键是公司名称,值是 Info 结构体。然后我们将这个字典中的信息打印出来。

上面就是我利用 Rust 代码写了一个通用的爬虫模版,适合各行各业的数据抓取,总体来说各种解释备注也是很详细的,只要入门这个行业基本能看得懂我的代码,如果有啥不懂的或者有更好的建议可以评论区留言找我。

文章来源:https://blog.csdn.net/weixin_44617651/article/details/135474898
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。