C#爬虫框架

这里写图片描述

1:.Net开源的跨平台爬虫框架 DotnetSpider Star:430

DotnetSpider这是国人开源的一个跨平台、高性能、轻量级的爬虫软件,采用 C# 开发。目前是.Net开源爬虫最为优秀的爬虫之一。

2:俄国牛人写的开源爬虫xNet Star:117

这个一个俄国牛人写的开源工具,为啥说他强悍了,因为他将所有Http协议的底层都实现了一遍,这有啥好处?只要你是写爬虫的,都会遇到一个让人抓狂的问题,就是明明知道自己Http请求头跟浏览器一模一样了,为啥还会获取不到自己想要的数据

3:开源的.net爬虫Abot Star:1050

Abot是一个开源的.net爬虫,速度快,易于使用和扩展

4:C#仿火车头的开源数据采集器V5_DataCollection Star:25

V5 数据采集器是一款面向个人及专业用户提供的一款专业的数据采集软件,即适用于简单化配置操作,也适应针对复杂数据采集的能力,所见即可采。 V5数据采集器独有的代理轮询采集机制,可有效的解决网站屏蔽问题,可用于互联网数据动态监控,绝对是您的首选

5:C#爬虫引擎内核版SmartSpider Star:17

SmartSpider爬虫引擎内核版,全新的设计理念,真正的极简版本。

6:.Net开源的超级爬虫Hawk Star:1039

HAWK是一种数据采集和清洗工具,依据GPL协议开源,能够灵活,有效地采集来自网页,数据库,文件, 并通过可视化地拖拽, 快速地进行生成,过滤,转换等操作。其功能最适合的领域,是爬虫和数据清洗

7:基于C#.NET的简单且高效的网站爬虫 Star:58

Simple-Web-Crawler - 基于C#.NET的简单网页爬虫,支持异步并发、切换代理、操作Cookie、Gzip加速。

8:网站数据采集软件网络矿工采集器(原soukey采摘)

Soukey采摘网站数据采集软件是一款基于.Net平台的开源软件,也是网站数据采集软件类型中唯一一款开源软件。尽管Soukey采摘开源,但并不会影响软件功能的提供,甚至要比一些商用软件的功能还要丰富。Soukey采摘当前提供的主要功能如下: 1. 多任务多线程数据采集,支持POST方式;…

9:网站数据采集软件NETSpider Star:94

NETSpider网站数据采集软件是一款基于.Net平台的开源软件。 软件部分功能是基本Soukey软件进行开发的.这个版本采用VS2010+.NET3.5进行开发的. NETSpider采摘当前提供的主要功能如下: 1. 多任务多线程数据采集,支持POST方式(待定); 2. 可…

10:网络爬虫程序NWebCrawler

NWebCrawler是一款开源的C#网络爬虫程序

11:Web爬虫工具NCrawler

NCrawler 是一个Web Crawler 工具,它可以让开发人员很轻松的发展出具有Web Crawler 能力的应用程式,并且具有可以延展的能力,让开发人员可以扩充它的功能,以支援其他类型的资源(例如PDF /Word/Excel 等档案或其他资料来源)。 NCrawler 使用多执行绪…

12:多线程web爬虫程序spidernet

spidernet是一个以递归树为模型的多线程web爬虫程序, 支持text/html资源的获取. 可以设定爬行深度, 最大下载字节数限制, 支持gzip解码, 支持以gbk(gb2312)和utf8编码的资源; 存储于sqlite数据文件. 源码中TODO:标记描述了未完成功能, 希望提交你…

13:网页爬虫ScrapingSpider Star:48

ScrapingSpider 是一个业余时间开发的,支持多线程,支持关键字过滤,支持正文内容智能识别的爬虫。 爬虫的核心实现在ScrapingSpider.Core程序集中。爬虫类为Spider类,爬虫的爬取逻辑,与页面处理逻辑通过事件分离,两个关键事件为AddUrlEvent和Data…

14:爬虫小新Sinawler

国内第一个针对微博数据的爬虫程序!原名“新浪微博爬虫”。 登录后,可以指定用户为起点,以该用户的关注人、粉丝为线索,延人脉关系搜集用户基本信息、微博数据、评论数据。 该应用获取的数据可作为科研、与新浪微博相关的研发等的数据支持,但请勿用于商业用途。该应用基于.NET2.0框架,需SQL SER…

.Net中有不少开源的爬虫工具,abot就是其中之一。Abot是一个开源的.net爬虫,速度快,易于使用和扩展。项目的地址是 https://github.com/sjdirect/abot 对于爬取的Html,使用的分析工具是CsQuery, CsQuery可以算是.net中实现的Jquery, 可以使用类似Jquery中的方法来处理html页面。CsQuery的项目地址是https://github.com/afeiship/CsQuery一. 对Abot爬虫配置1. 通过属性设置先创建config对象,然后设置config中的各项属性:CrawlConfiguration crawlConfig = new CrawlConfiguration();  crawlConfig.CrawlTimeoutSeconds = 100;  crawlConfig.MaxConcurrentThreads = 10;  crawlConfig.MaxPagesToCrawl = 1000;  crawlConfig.UserAgentString = "abot v1.0 http://code.google.com/p/abot";  crawlConfig.ConfigurationExtensions.Add("SomeCustomConfigValue1", "1111");  crawlConfig.ConfigurationExtensions.Add("SomeCustomConfigValue2", "2222");2. 通过App.config配置直接从配置文件中读取,但是也任然可以在修改各项属性:CrawlConfiguration crawlConfig = AbotConfigurationSectionHandler.LoadFromXml().Convert(); crawlConfig.CrawlTimeoutSeconds = 100;  crawlConfig.MaxConcurrentThreads = 10;3. 应用配置到爬虫对象PoliteWebCrawler crawler = new PoliteWebCrawler(); PoliteWebCrawler crawler = new PoliteWebCrawler(crawlConfig, null, null, null, null, null, null, null);二,使用爬虫,注册各种事件爬虫中主要是4个事件, 页面爬取开始、页面爬取失败、页面不允许爬取事件、页面中的链接不允许爬取事件。下面是示例代码:crawlergeCrawlStartingAsync  = crawler_ProcessPageCrawlStarting;//单个页面爬取开始  crawler.PageCrawlCompletedAsync  = crawler_ProcessPageCrawlCompleted;//单个页面爬取结束  crawler.PageCrawlDisallowedAsync  = crawler_PageCrawlDisallowed;//页面不允许爬取事件  crawler.PageLinksCrawlDisallowedAsync  = crawler_PageLinksCrawlDisallowed;//页面链接不允许爬取事件 void crawler_ProcessPageCrawlStarting(object sender, PageCrawlStartingArgs e) {   PageToCrawl pageToCrawl = e.PageToCrawl;   Console.WriteLine("About to crawl link {0} which was found on page {1}", pageToCrawl.Uri.AbsoluteUri, pageToCrawl.ParentUri.AbsoluteUri); } void crawler_ProcessPageCrawlCompleted(object sender, PageCrawlCompletedArgs e) {   CrawledPage crawledPage = e.CrawledPage;   if (crawledPage.WebException != null || crawledPage.HttpWebResponse.StatusCode != HttpStatusCode.OK)     Console.WriteLine("Crawl of page failed {0}", crawledPage.Uri.AbsoluteUri);   else     Console.WriteLine("Crawl of page succeeded {0}", crawledPage.Uri.AbsoluteUri);   if (string.IsNullOrEmpty(crawledPage.Content.Text))     Console.WriteLine("Page had no content {0}", crawledPage.Uri.AbsoluteUri); } void crawler_PageLinksCrawlDisallowed(object sender, PageLinksCrawlDisallowedArgs e) {   CrawledPage crawledPage = e.CrawledPage;   Console.WriteLine("Did not crawl the links on page {0} due to {1}", crawledPage.Uri.AbsoluteUri, e.DisallowedReason); } void crawler_PageCrawlDisallowed(object sender, PageCrawlDisallowedArgs e) {   PageToCrawl pageToCrawl = e.PageToCrawl;   Console.WriteLine("Did not crawl page {0} due to {1}", pageToCrawl.Uri.AbsoluteUri, e.DisallowedReason); }三, 为爬虫添加多个附加对象Abot应该是借鉴了Asp.net MVC中的ViewBag, 也为爬虫对象设置了对象级别的CrwalBag和Page级别的ViewBag.PoliteWebCrawler crawler = new PoliteWebCrawler(); crawler.CrawlBag.MyFoo1 = new Foo();//对象级别的 CrwalBagcrawler.CrawlBag.MyFoo2 = new Foo(); crawler.PageCrawlStartingAsync  = crawler_ProcessPageCrawlStarting; ...void crawler_ProcessPageCrawlStarting(object sender, PageCrawlStartingArgs e) {   //获取CrwalBag中的对象   CrawlContext context = e.CrawlContext;    context.CrawlBag.MyFoo1.Bar();  //使用CrwalBag    context.CrawlBag.MyFoo2.Bar();      //使用页面级别的    PageBag  e.PageToCrawl.PageBag.Bar = new Bar(); }四,启动爬虫启动爬虫非常简单,调用Crawl方法,指定好开始页面,就可以了。CrawlResult result = crawler.Crawl(new Uri("  if (result.ErrorOccurred)         Console.WriteLine("Crawl of {0} completed with error: {1}",          result.RootUri.AbsoluteUri, result.ErrorException.Message         );          else         Console.WriteLine("Crawl of {0} completed without error.", result.RootUri.AbsoluteUri);五,介绍CsQuery在PageCrawlCompletedAsync事件中, e.CrawledPage.CsQueryDocument就是一个CsQuery对象。这里介绍一下CsQuery在分析Html上的优势:cqDocument.Select(".bigtitle > h1")这里的选择器的用法和Jquery完全相同,这里是取class为.bittitle下的h1标签。如果你能熟练的使用Jquery,那么上手CsQuery会非常快和容易。 标签:网络爬虫  网络蜘蛛
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值