dotNetSpider 手记
准备工作:
从github上download工程。
安装VS2017。
安装 .net core 2.0。
编译通过。
基础架构:
调度器 Scheduler 从根site开始,向 Downloader 分配请求任务。
Downloader 根据分配到的请求任务,向目标site 下载 page,并交由 PageProcessor 进行页面处理。
PageProcessor 将处理的结果推入 Pipeline,将解析出的新的链接,推入 Scheduler。
循环直至 Scheduler 没有新的请求可以处理。
Spider.Create:
设定根访问节点、唯一身份标识、请求调度器 Scheduler,页面处理器 PageProcessor。
以给出的 Sample 样例中,遍历 cnblog 站点为例进行解析:
Scheduler 是 QueueDuplicateRemovedScheduler。就是一个存放 Request 的队列。
PageProcessor 是默认的 DefaultPageProcessor。
这里涉及到 XPath 的知识,需要快速了解。
XPath:XPath 使用路径表达式在 XML 文档中进行导航,选取 XML 文档中的节点或者节点集。
主要知识点见:http://www.runoob.com/xpath/xpath-syntax.html
页面处理流程 BasePageProcessor.Process:
public void Process(Page page){bool isTarget = true;if (_targetUrlPatterns.Count > 0 && !_targetUrlPatterns.Contains(null)){foreach (var regex in _targetUrlPatterns){isTarget = regex.IsMatch(page.Url);if (isTarget){break;}}}if (!isTarget){return;}Handle(page);page.ResultItems.IsSkip = page.ResultItems.Results.Count == 0;if (!page.SkipExtractTargetUrls){ExtractUrls(page);}}
在 Sample 中,调用的是 DefaultPageProcessor 提供的 hanlde:
page.AddResultItem("title", page.Selectable.XPath("//title").GetValue());page.AddResultItem("html", page.Content);
默认的页面处理,是找出 “title” 元素,以及整个 html 内容。
接着在下载好的页面内容中,查找更多的 url。
dotNetSpider 手记相关推荐
- AM335X的汇编语言与c语言,X86汇编语言学习手记 -- 汇编和C协同
X86汇编语言学习手记(3) 2004年12月 在X86汇编语言学习手记(1)(2)中,可以看到栈(Stack)作为进程执行过程中数据的临时存储区域,通常包含如下几类数据: 局部变量 函数调用的返回地 ...
- 结巴分词和自然语言处理HanLP处理手记
手记实用系列文章: 1 结巴分词和自然语言处理HanLP处理手记 2 Python中文语料批量预处理手记 3 自然语言处理手记 4 Python中调用自然语言处理工具HanLP手记 5 Python中 ...
- 大叔手记(17):大叔2011年读过的书及2012年即将要读的书
前言 2011年是大叔最累的一年(基本上都是晚上12点以后睡觉,早上6点30分起),读得书也是异常的多,一方面要保持自己的技术在最前列,另外方面技术管理和项目管理方面的东西也要进一步进阶,2011年读 ...
- webpack入门学习手记(一)
本人微信公众号:前端修炼之路,欢迎关注. 之前用过gulp.grunt,但是一直没有学习过webpack.这两天刚好有时间,学习了下webpack.webpack要想深入研究,配置的东西比较多,网上的 ...
- 【手记】解决启动SQL Server Management Studio 17时报Cannot find one or more components...的问题
[手记]解决启动SQL Server Management Studio 17时报Cannot find one or more components...的问题 参考文章: (1)[手记]解决启动S ...
- ELK菜鸟手记 (三) - X-Pack权限控制之给Kibana加上登录控制以及index_not_found_exception问题解决
ELK菜鸟手记 (三) - X-Pack权限控制之给Kibana加上登录控制以及index_not_found_exception问题解决 参考文章: (1)ELK菜鸟手记 (三) - X-Pack权 ...
- Cheat Engine Tutorial 闯关手记
Cheat Engine Tutorial 闯关手记 第一关 Cheat Engine 能做什么?修改游戏的数值,就象<金山游侠V>,但它能胜任动态地址的查找:制作游戏专用的修改器,补丁, ...
- 前台提示_住哲随手记:前台工作备忘录,记你想记的所有事
酒店前台每天需要手写记录大量的代办事项,如上午10点101房间叫早,3号提醒客人续住等.但是由于前台工作琐碎,交接班的时候会发生交接事项遗漏的情况,导致对客服务疏忽,很容易造成客人差评. 请收下小哲的 ...
- OpenWrite 新增扩散渠道:慕课手记,支持图片转存!
相信用过慕课去手工发布文章的童鞋,经常会被下面这个问题搞的比较吃力. 直接复制图片到编辑器中,经常出现图片上传失败的问题. 在这种情况下,我们只能一个个图片手工上传来完成.很多需要大量图片支持的作者, ...
最新文章
- vue底部选择器_Vue组件-极简的地址选择器
- appium 如何调用 adb_带你了解可用于Android APP自动化测试的框架:Appium
- 人力资源社会保障部关于公布国家职业资格目录的通知
- ASP.NET DROPDOWNLIST无刷新联动(中文URL参数处理)
- html音乐播放心得体会,音乐心得体会
- jdk1.8中文帮助文档
- fastdfs 原理
- python批量保存网页为pdf_在chrome Python3.6中自动打印/将网页保存为pdf
- linux 开启共享文件,文件夹共享权限设置,linux设置文件夹权限-
- 【软件工程】数据流图 ( 数据流图简介 | 数据流图概念 | 数据流 | 加工 | 数据存储 | 外部实体 | 数据流图分层 | 顶层数据流图 | 中层数据流图 | 底层数据流图 )
- Web前端学习第四周
- Xception实现动物识别(TensorFlow)
- 搞定计算机网络面试,看这篇就够了
- 这位博主居然说“我就是看故事也要把这知识学了”
- mybatis-plus clickhouse支持分页
- Jmeter 性能测试—阶梯式压测
- 典型的贪心算法~ (田忌赛马 )
- 该按钮可以重启计算机,win7指定快捷键和重启快捷键是什么
- 中小手机厂商遇倒闭潮:沦为小米华为炮灰
- 计算机求和公式IFEROR,Excel iserror函数用法和iferror函数的区别