C#开源爬虫NCrawler源代码解读以及将其移植到python3.2(1)
2013-06-26 22:15
696 查看
NCrawler 是一款 .net 上的开源爬虫,虽然它没有arachnode.net那么成熟完善,但是代码量小,设计结构好,很适合大家研读。
在NCrawler.Demo项目下的Program.cs文件中,找到Main函数
函数开头的一段代码,是打开HTTP协议的限制(对同一个WEB最多同时发起两个连接的限制)
紧接着代码进入一个demo的RUN() 函数:
该demo首先创建了一个Crawler对象,构造函数的第一个参数是初始爬的URL,后面的参数是一系列输出的管道,以后讲。
然后程序执行Crawl()函数开始爬行。
这个函数完成了一系列配置,最后将URL添加到一个等待下载解析的URL序列m_CrawlerQueue中。代码如下:
第二个参数0表示初始深度,此时程序进入一个循环直到爬取到设定的深度为止。
在Crawl()函数中有一个专门用来处理 m_CrawlerQueue 的函数叫ProcessQueue()这个函数有一个重要的循环:
在StartDownload()函数的内部就是启用了线程池技术,下载网页并解析。并且在线程完成后回调,继续处理序列.
在NCrawler.Demo项目下的Program.cs文件中,找到Main函数
函数开头的一段代码,是打开HTTP协议的限制(对同一个WEB最多同时发起两个连接的限制)
ServicePointManager.MaxServicePoints = 999999; ServicePointManager.DefaultConnectionLimit = 999999; ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls; ServicePointManager.CheckCertificateRevocationList = true; ServicePointManager.EnableDnsRoundRobin = true;
紧接着代码进入一个demo的RUN() 函数:
SimpleCrawlDemo.Run();
该demo首先创建了一个Crawler对象,构造函数的第一个参数是初始爬的URL,后面的参数是一系列输出的管道,以后讲。
然后程序执行Crawl()函数开始爬行。
using (Crawler c = new Crawler(new Uri("http://ncrawler.codeplex.com"), new HtmlDocumentProcessor(), // Process html new iTextSharpPdfProcessor.iTextSharpPdfProcessor(), // Add PDF text extraction new GoogleLanguageDetection(), // Add language detection new Mp3FileProcessor(), // Add language detection new DumperStep()) { // Custom step to visualize crawl MaximumThreadCount = 2, MaximumCrawlDepth = 10, ExcludeFilter = Program.ExtensionsToSkip, }) { // Begin crawl c.Crawl(); }
这个函数完成了一系列配置,最后将URL添加到一个等待下载解析的URL序列m_CrawlerQueue中。代码如下:
AddStep(m_BaseUri, 0);
第二个参数0表示初始深度,此时程序进入一个循环直到爬取到设定的深度为止。
在Crawl()函数中有一个专门用来处理 m_CrawlerQueue 的函数叫ProcessQueue()这个函数有一个重要的循环:
while (ThreadsInUse < MaximumThreadCount && WaitingQueueLength > 0) { StartDownload(); }
在StartDownload()函数的内部就是启用了线程池技术,下载网页并解析。并且在线程完成后回调,继续处理序列.
相关文章推荐
- C#开源爬虫NCrawler源代码解读以及将其移植到python3.2(2)
- C#开源爬虫NCrawler源代码解读以及将其移植到python3.2(2)
- C#开源爬虫NCrawler源代码解读以及将其移植到python3.2(5)(selenium登场)
- C#开源爬虫NCrawler源代码解读以及将其移植到python3.2(5)(selenium登场)
- C#开源爬虫NCrawler源代码解读以及将其移植到python3.2(1)
- C#开源爬虫NCrawler源代码解读以及将其移植到python3.2(3)
- C#开源爬虫NCrawler源代码解读以及将其移植到python3.2(3)
- C#开源爬虫NCrawler源代码解读以及将其移植到python3.2(4)
- C#开源爬虫NCrawler源代码解读以及将其移植到python3.2(4)
- 开源you-get项目爬虫,以及基于python+selenium的自动测试利器
- python爬虫之简介以及前期准备
- 【Python3.6爬虫学习记录】(五)Cookie的使用以及简单的爬取知乎
- 利用python爬虫技术获取每天每场的每位球员NBA数据以及每日范特西评分
- Python开源抓取框架简单介绍,以及安装(ubuntu)常见问题解决
- python开源爬虫框架scrapy源码解析(二)
- 轻量级AOP框架-移植python的装饰器(Decorator)到C#(思考篇)
- python百度贴吧爬虫,以及爬虫简要入门
- 开源一个C#写的小爬虫,简单实用
- Python正则表达式以及爬虫
- ViewModel中C# Property自动添加OnPropertyChanged处理的小工具, 以及相应Python知识点