实例介绍
【实例简介】
abot是一个高速且灵活的跨平台C#网络爬虫框架,旨在为开发者提供一个简单易用的工具来抓取网站数据。该框架解决了多线程、HTTP请求、调度、链接解析等底层问题,允许开发者通过注册事件来处理页面数据。此外,开发者可以插入自己的核心接口实现,完全控制爬取过程。
Abot是sjdirect的一个实例,支持.NET Standard 2.0及以上版本,以及.NET 4.0版本,使其与多种.net框架/核心实现高度兼容。Abot特点包括:开源、高速、易于定制、高度单元测试、轻量级和无外部依赖。
使用AbotX可以获得更强大的扩展/包装器,包括并发抓取多个站点、执行/渲染JavaScript、避免被站点阻塞、自动调优、自动节流、暂停/恢复实时爬取以及简化的可插拔性/扩展性。
快速开始指南提供了安装Abot的方法,以及如何使用Abot进行简单的爬虫示例和单页面请求。此外,还介绍了Abot配置选项、事件注册和自定义对象使用方法,以及如何自定义爬取行为,包括自定义实现PoliteWebCrawler的依赖项以适应特定需求。
【实例截图】
【核心代码】
文件清单
└── abot-0363d0195d739ecff5360b07ecfdfe885f51a125
├── Abot2
│ ├── Abot2.csproj
│ ├── Abot2.nuspec.ignore
│ ├── AssemblyDirectives.cs
│ ├── Constants.cs
│ ├── Core
│ │ ├── AngleSharpHyperLinkParser.cs
│ │ ├── BloomFilterCrawledUrlRepository.cs
│ │ ├── CompactCrawledUrlRepository.cs
│ │ ├── CrawlDecisionMaker.cs
│ │ ├── DomainRateLimiter.cs
│ │ ├── FifoPagesToCrawlRepository.cs
│ │ ├── HyperLinkParser.cs
│ │ ├── InMemoryCrawledUrlRepository.cs
│ │ ├── PageRequester.cs
│ │ ├── RobotsDotText.cs
│ │ ├── RobotsDotTextFinder.cs
│ │ ├── Scheduler.cs
│ │ └── WebContentExtractor.cs
│ ├── Crawler
│ │ ├── CrawlArgs.cs
│ │ ├── PageCrawlCompletedArgs.cs
│ │ ├── PageCrawlDisallowedArgs.cs
│ │ ├── PageCrawlStartingArgs.cs
│ │ ├── PageLinksCrawlDisallowedArgs.cs
│ │ ├── PoliteWebCrawler.cs
│ │ ├── RobotsDotTextParseCompletedArgs.cs
│ │ └── WebCrawler.cs
│ ├── Poco
│ │ ├── CrawlConfiguration.cs
│ │ ├── CrawlContext.cs
│ │ ├── CrawlDecision.cs
│ │ ├── CrawledPage.cs
│ │ ├── CrawlResult.cs
│ │ ├── Enums.cs
│ │ ├── HyperLink.cs
│ │ ├── PageContent.cs
│ │ └── PageToCrawl.cs
│ └── Util
│ ├── BloomFilter.cs
│ ├── CachedMemoryMonitor.cs
│ ├── GcMemoryMonitor.cs
│ ├── LimitedConcurrencyTaskScheduler.cs
│ ├── ManualThreadManager.cs
│ ├── MemoryManager.cs
│ ├── RateLimiter.cs
│ ├── TaskThreadManager.cs
│ └── ThreadManager.cs
├── Abot2.Demo
│ ├── Abot2.Demo.csproj
│ └── Program.cs
├── Abot2.Tests.Integration
│ ├── Abot2.Tests.Integration.csproj
│ ├── AssemblySetup.cs
│ ├── CrawlTestBase.cs
│ └── CrawlTest.cs
├── Abot2.Tests.Unit
│ ├── Abot2.Tests.Unit.csproj
│ ├── AssemblySetup.cs
│ ├── Core
│ │ ├── AngleSharpHyperLinkParserTest.cs
│ │ ├── BloomFilterCrawledUrlRepositoryTest.cs
│ │ ├── CompactCrawledUrlRepositoryTest.cs
│ │ ├── CrawlDecisionMakerTest.cs
│ │ ├── CrawledUrlRepositoryTest.cs
│ │ ├── DomainRateLimiterTest.cs
│ │ ├── FifoPagesToCrawlRepositoryTest.cs
│ │ ├── HyperlinkParserTest.cs
│ │ ├── InMemoryCrawledUrlRepositoryTest.cs
│ │ ├── PageRequesterTest.cs
│ │ ├── PagesToCrawlRepositoryTest.cs
│ │ ├── RobotsDotTextFinderTest.cs
│ │ ├── RobotsDotTextTest.cs
│ │ ├── SchedulerTest.cs
│ │ └── WebContentExtractorTest.cs
│ ├── Crawler
│ │ ├── CrawlArgsTest.cs
│ │ ├── PageCrawlCompletedArgsTest.cs
│ │ ├── PageCrawlDisallowedArgsTest.cs
│ │ ├── PageCrawlStartingArgsTest.cs
│ │ ├── PageLinksCrawlDisallowedArgsTest.cs
│ │ ├── PoliteWebCrawlerTest.cs
│ │ └── WebCrawlerTest.cs
│ ├── FakeHttpContent.cs
│ ├── HtmlAgilityPackStackOverflow1.html
│ ├── HtmlAgilityPackStackOverflow2.html
│ ├── Poco
│ │ ├── CrawlConfigurationTest.cs
│ │ ├── CrawlContextTest.cs
│ │ ├── CrawlDecisionTest.cs
│ │ ├── CrawledPageTest.cs
│ │ ├── CrawlResultTest.cs
│ │ ├── HyperLinkTest.cs
│ │ ├── PageContentTest.cs
│ │ └── PageToCrawlTest.cs
│ └── Util
│ ├── BloomFilterTest.cs
│ ├── CachedMemoryMonitorTest.cs
│ ├── GcMemoryMonitorTest.cs
│ ├── ManualThreadManagerTest.cs
│ ├── MemoryManagerTest.cs
│ ├── RateLimiterTest.cs
│ ├── TaskThreadManagerTest.cs
│ └── ThreadManagerTest.cs
├── Abot.sln
├── azure-pipelines.yml
├── License.txt
├── msbuild.rsp
├── README.md
└── TestResponses.saz
13 directories, 98 files
abot是一个高速且灵活的跨平台C#网络爬虫框架,旨在为开发者提供一个简单易用的工具来抓取网站数据。该框架解决了多线程、HTTP请求、调度、链接解析等底层问题,允许开发者通过注册事件来处理页面数据。此外,开发者可以插入自己的核心接口实现,完全控制爬取过程。
Abot是sjdirect的一个实例,支持.NET Standard 2.0及以上版本,以及.NET 4.0版本,使其与多种.net框架/核心实现高度兼容。Abot特点包括:开源、高速、易于定制、高度单元测试、轻量级和无外部依赖。
使用AbotX可以获得更强大的扩展/包装器,包括并发抓取多个站点、执行/渲染JavaScript、避免被站点阻塞、自动调优、自动节流、暂停/恢复实时爬取以及简化的可插拔性/扩展性。
快速开始指南提供了安装Abot的方法,以及如何使用Abot进行简单的爬虫示例和单页面请求。此外,还介绍了Abot配置选项、事件注册和自定义对象使用方法,以及如何自定义爬取行为,包括自定义实现PoliteWebCrawler的依赖项以适应特定需求。
【实例截图】
【核心代码】
文件清单
└── abot-0363d0195d739ecff5360b07ecfdfe885f51a125
├── Abot2
│ ├── Abot2.csproj
│ ├── Abot2.nuspec.ignore
│ ├── AssemblyDirectives.cs
│ ├── Constants.cs
│ ├── Core
│ │ ├── AngleSharpHyperLinkParser.cs
│ │ ├── BloomFilterCrawledUrlRepository.cs
│ │ ├── CompactCrawledUrlRepository.cs
│ │ ├── CrawlDecisionMaker.cs
│ │ ├── DomainRateLimiter.cs
│ │ ├── FifoPagesToCrawlRepository.cs
│ │ ├── HyperLinkParser.cs
│ │ ├── InMemoryCrawledUrlRepository.cs
│ │ ├── PageRequester.cs
│ │ ├── RobotsDotText.cs
│ │ ├── RobotsDotTextFinder.cs
│ │ ├── Scheduler.cs
│ │ └── WebContentExtractor.cs
│ ├── Crawler
│ │ ├── CrawlArgs.cs
│ │ ├── PageCrawlCompletedArgs.cs
│ │ ├── PageCrawlDisallowedArgs.cs
│ │ ├── PageCrawlStartingArgs.cs
│ │ ├── PageLinksCrawlDisallowedArgs.cs
│ │ ├── PoliteWebCrawler.cs
│ │ ├── RobotsDotTextParseCompletedArgs.cs
│ │ └── WebCrawler.cs
│ ├── Poco
│ │ ├── CrawlConfiguration.cs
│ │ ├── CrawlContext.cs
│ │ ├── CrawlDecision.cs
│ │ ├── CrawledPage.cs
│ │ ├── CrawlResult.cs
│ │ ├── Enums.cs
│ │ ├── HyperLink.cs
│ │ ├── PageContent.cs
│ │ └── PageToCrawl.cs
│ └── Util
│ ├── BloomFilter.cs
│ ├── CachedMemoryMonitor.cs
│ ├── GcMemoryMonitor.cs
│ ├── LimitedConcurrencyTaskScheduler.cs
│ ├── ManualThreadManager.cs
│ ├── MemoryManager.cs
│ ├── RateLimiter.cs
│ ├── TaskThreadManager.cs
│ └── ThreadManager.cs
├── Abot2.Demo
│ ├── Abot2.Demo.csproj
│ └── Program.cs
├── Abot2.Tests.Integration
│ ├── Abot2.Tests.Integration.csproj
│ ├── AssemblySetup.cs
│ ├── CrawlTestBase.cs
│ └── CrawlTest.cs
├── Abot2.Tests.Unit
│ ├── Abot2.Tests.Unit.csproj
│ ├── AssemblySetup.cs
│ ├── Core
│ │ ├── AngleSharpHyperLinkParserTest.cs
│ │ ├── BloomFilterCrawledUrlRepositoryTest.cs
│ │ ├── CompactCrawledUrlRepositoryTest.cs
│ │ ├── CrawlDecisionMakerTest.cs
│ │ ├── CrawledUrlRepositoryTest.cs
│ │ ├── DomainRateLimiterTest.cs
│ │ ├── FifoPagesToCrawlRepositoryTest.cs
│ │ ├── HyperlinkParserTest.cs
│ │ ├── InMemoryCrawledUrlRepositoryTest.cs
│ │ ├── PageRequesterTest.cs
│ │ ├── PagesToCrawlRepositoryTest.cs
│ │ ├── RobotsDotTextFinderTest.cs
│ │ ├── RobotsDotTextTest.cs
│ │ ├── SchedulerTest.cs
│ │ └── WebContentExtractorTest.cs
│ ├── Crawler
│ │ ├── CrawlArgsTest.cs
│ │ ├── PageCrawlCompletedArgsTest.cs
│ │ ├── PageCrawlDisallowedArgsTest.cs
│ │ ├── PageCrawlStartingArgsTest.cs
│ │ ├── PageLinksCrawlDisallowedArgsTest.cs
│ │ ├── PoliteWebCrawlerTest.cs
│ │ └── WebCrawlerTest.cs
│ ├── FakeHttpContent.cs
│ ├── HtmlAgilityPackStackOverflow1.html
│ ├── HtmlAgilityPackStackOverflow2.html
│ ├── Poco
│ │ ├── CrawlConfigurationTest.cs
│ │ ├── CrawlContextTest.cs
│ │ ├── CrawlDecisionTest.cs
│ │ ├── CrawledPageTest.cs
│ │ ├── CrawlResultTest.cs
│ │ ├── HyperLinkTest.cs
│ │ ├── PageContentTest.cs
│ │ └── PageToCrawlTest.cs
│ └── Util
│ ├── BloomFilterTest.cs
│ ├── CachedMemoryMonitorTest.cs
│ ├── GcMemoryMonitorTest.cs
│ ├── ManualThreadManagerTest.cs
│ ├── MemoryManagerTest.cs
│ ├── RateLimiterTest.cs
│ ├── TaskThreadManagerTest.cs
│ └── ThreadManagerTest.cs
├── Abot.sln
├── azure-pipelines.yml
├── License.txt
├── msbuild.rsp
├── README.md
└── TestResponses.saz
13 directories, 98 files
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论