#news #scrape #sites #scraper #cbc #ca #canadian

canadian_news_scraper

一个提供API的库,用于爬取3个加拿大新闻网站并返回数据

7个版本

0.1.6 2021年1月6日
0.1.5 2021年1月6日

#6 in #cbc

每月下载 28

MIT 协议

26KB
576

加拿大新闻爬虫器

由 Jace Mattson 开发

这是一个Rust库,可以被其他程序包含以从目前三个加拿大新闻网站中提取数据。

说明

库的API相当简单,它通过提供位于scraper模块中的scrape()函数来工作,该函数接收一个NewsEnum,然后使用它来爬取与该Enum关联的网站。

pub async fn scrape(news: NewsEnum) -> Vec<News>

scrape()使用scraper模块中的一系列函数来确定需要使用哪种新闻网站标记来有效地爬取您请求的网站。

数据结构

scrape()返回的基本数据结构是一个类型为News的Vector。News是一个结构体,它在News模块中与NewsEnum和NewsSite一起定义。

pub struct News {
    pub news_enum: NewsEnum,
    pub news_site: String,
    pub article_link: String,
    pub img_link: String,
    pub title: String,
    pub desc: String,
    pub author: String,
    pub metadata: String,
    pub article_text: String,
    pub article_date: String,
    pub scrape_date: DateTime<Utc>
}

用例

该程序的主要用例是在我创建的一个REST API中,该API将用于每天爬取这些网站,并将信息存储在数据库中,然后可以通过REST应用程序访问。

示例


let news_site = news::NewsEnum::GlobalNews;
let val:Vec<News> = scraper::scrape(news_site);


您可以在位于lib.rs中的tests模块中看到类似的示例。

依赖项

~10–19MB
~285K SLoC