大年夜如斯丰富的注释中我感触感染到了作者的耐烦,我们来分析一下这个爬虫在干什么?
- 输入一个要爬取的URL地址
- 经由过程 JDK 原生 API 发送收集请求获取页面信息(这琅绫腔有应用 HttpClient)
- 应用 Jsoup 解析 DOM
- 处理本身须要的数据
- 将它们输出在控制台
大年夜概就是如许的步调,代码也异常简洁,我们设计框架的目标是将这些流程同一化,把通用的功能进行抽象,削减反复工作。 还有一些没推敲到的身分添加进去,那么设计爬虫框架要有哪些构成呢?
- URL治理
- 网页下载器
- 爬虫调剂器
- 网页解析器
- 数据处理器
分别来解释一下每个构成的感化是什么。
URL治理器
爬虫框架要处理很多的URL,我们须要设计一个队列存储所有要处理的URL,这种先辈先出的数据构造异常相符这个需求。 将所有要下载的URL存储在待处理队列中,每次下载会掏出一个,队列中就会少一个。我们知道有些URL的下载会有反爬虫策略, 所以针对这些请求须要做一些特别的设置,进而可以对URL进行封装抽出 Request。
网页下载器
在前面的简单例子中可以看出,如不雅没有网页下载器,用户就要编写收集请求的处理代码,这无疑对每个URL都是雷同的动作。 所以在框架设计中我们直接参加它就好了,至于应用什么库来进行下载都是可以的,你可以用 httpclient 也可以用 okhttp, 在本文中我们应用一个超轻量级的收集请求库 oh-my-request (没错,就是鄙人搞的)。 优良的框架设计会将这个下载组件置为可调换,供给默认的即可。
爬虫调剂器
调剂器和我们在开辟 web 应用中的┞菲握器是一个类似的概念,它用于鄙人载器、解析器之间做流转处理。 解析器可以解析到更多的URL发送给调剂器,调剂器再次的传输给下载器,如许就会让各个组件有条不紊的进行工作。
什么是爬虫?
网页解析器
我们知道当一个页面下载完成后就是一段 HTML 的 DOM 字符串表示,但还须要提掏出真正须要的数据, 以前的做法是经由过程 String 的 API 或者正则表达式的方法在 DOM 中搜寻,如许是很麻烦的,框架 应当供给一种合理、常用、便利的方法来赞助用户完成提取数据这件事儿。常用的手段是经由过程 xpath 或者 css 选择器大年夜 DOM 中进行提取,并且进修这项技能在几乎所有的爬虫框架中都是实用的。
推荐阅读
年前最后一场技巧盛宴 | 1月27日与京东、日记易技巧大年夜咖畅聊智能化运维成长趋势!PC主机重要的散热方法分为风冷和水冷,然则信赖不少玩家据说过“油冷”,就是应用矿物油不导电的特点,将>>>详细阅读
本文标题:设计和实现一款轻量级的爬虫框架
地址:http://www.17bianji.com/lsqh/40337.html
1/2 1