7个版本
0.1.6 | 2021年1月6日 |
---|---|
0.1.5 | 2021年1月6日 |
#6 in #cbc
每月下载 28 次
26KB
576 行
加拿大新闻爬虫器
由 Jace Mattson 开发
这是一个Rust库,可以被其他程序包含以从目前三个加拿大新闻网站中提取数据。
- Global News
- https://www.cbc.ca/
- 爬取前4条。
- Ctv News
- https://www.ctvnews.ca/
- 爬取前12条。
- Cbc News
- https://globalnews.ca/
- 爬取前12条。
说明
库的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