查看原文
其他

.NET 分布式爬虫框架

DotNet 2024-04-12

The following article is from Dotnet 工具箱 Author RuiJi.Net

RuiJi.Net


RuiJi.Net 是一个可以分布式部署的爬虫框架,使用 C# 开发,项目的最终目的是可以对大量的网站进行自动更新检查及抓取。


RuiJi.Net 支持自管理Cookie,并且自动维护不同浏览器标识的Cookie,这意味着您可以在使用独立IP的基础上,虚拟出任意多的Cookie. RuiJi.Net 同样支持使用抓取服务器上的IP进行轮询抓取,并且也可以使用代理服务器。

RuiJi.Net具有自己的抽取模型,称为RuiJi Expression(RuiJi表达式),您可以使用RuiJi表达式定义抽取模型,并对需要提取的元数据进行精确清洗。

RuiJi 表达式可以存储为文本文档、数据库及高速缓存中。

如何使用

使用本地 IP

var crawler = new RuiJiCrawler();
var request = new Request("https://www.baidu.com");
var response = crawler.Request(request);

使用指定 IP

var crawler = new RuiJiCrawler();
var request = new Request("https://www.baidu.com");
request.Ip = "192.168.31.196";
var response = crawler.Request(request);

使用代理

var crawler = new RuiJiCrawler();
var request = new Request("https://www.baidu.com");
request.Proxy = new RequestProxy("223.93.172.248"3128);

var response = crawler.Request(request);

提取URL

var crawler = new RuiJiCrawler();
var request = new Request("https://www.oschina.net/blog");

var response = crawler.Request(request);
var content = response.Data.ToString();

var parser = new RuiJiParser();
var eb = parser.ParseExtract("css a.blog-title-link[href]\nexp https://my.oschina.net/*/blog/*");
var result = RuiJiExtractor.Extract(content, eb.Block);

提取标题

var crawler = new RuiJiCrawler();
var request = new Request("http://www.ruijihg.com/archives/category/tech/bigdata");

var response = crawler.Request(request);
var content = response.Data.ToString();

var parser = new RuiJiParser();
var eb = parser.ParseExtract(@"[tile]\ncss article:html

[meta]
#title
css .entry-header:text

#summary
css .entry-header + p:text
ex /Read more »/ -e"
);

var result = RuiJiExtractor.Extract(content, eb.Block);

项目地址

https://github.com/zhupingqi/RuiJi.Net

- EOF -

推荐阅读  点击标题可跳转
ASP.NET Core 使用最简洁的代码实现登录、认证和注销
.NET 6 开发的轻量级压测工具.NET 使用Automapper映射 Record类型

看完本文有收获?请转发分享给更多人

推荐关注「DotNet」,提升.Net技能 

点赞和在看就是最大的支持❤️

继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存