摘要:主要用于选择器抽象类,实现类前面说的两个接口,主要用于选择器继承。多个选择的情形,每个选择器各自独立选择,将所有结果合并。抽象类,定义了一些模板方法。这部分源码就不做分析了。这里需要提到的一点是返回的不支持选择,返回的对象支持选择。
1、Selector部分:
接口:
Selector:定义了根据字符串选择单个元素和选择多个元素的方法。
ElementSelector:定义了根据jsoup element选择单个、多个元素的方法。主要用于CSS、Xpath选择器.
抽象类:
BaseElementSelector,实现类前面说的两个接口,主要用于CSS、Xpath选择器继承。模板化接口方法,并定义了一些选择元素的方法由子类实现。
实现类:
CssSelector:Css选择器的实现类,继承BaseElementSelector。基本实现都是基于jsoup的css选择接口。
XpathSelector:xpath选择器的实现类,继承BaseElementSelector。基本实现都是采用作者自己基于jsoup实现的xsoup的相关接口。
RegexSelector:正则表达式选择器的实现类,仅实现了Selector接口。
JsonPathSelector:基于jayway/JsonPath path选择器。
ReplaceSelector:基于正则替换的选择器
SmartContentSelector:咱不明白其用途,被官方打上了实验性标记。
OrSelector:多个选择的情形,每个选择器各自独立选择,将所有结果合并。
AndSelector:多个选择的情形,流式管道选择,前一个选择的结果作为后一个选择的输入。
2、Selectable部分
接口:Selectable :定义了一系列链式api调用方式,支持xpath,css,regex,jsonPath选择器,以及一些便利方法,如links获取该选择器下的全部链接。
抽象类:AbstractSelectable,定义了一些模板方法。
实现类HtmlNode、PlainText、Html(继承自HtmlNode)、Json(继承自PlainText)等。
这部分源码就不做分析了。
这里需要提到的一点是:
Page.getHtml()返回的Html不支持JsonPath选择,Page.getJson()返回的Json对象支持JsonPath选择。
选择器部分到此结束吧。
下篇主题待定。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/66878.html
摘要:爬虫框架源码分析之爬虫框架源码分析之爬虫框架源码分析之爬虫框架源码分析之爬虫框架源码分析之之进阶 爬虫框架Webmagic源码分析之Spider爬虫框架WebMagic源码分析之Scheduler爬虫框架WebMagic源码分析之Downloader爬虫框架WebMagic源码分析之Selector爬虫框架WebMagic源码分析之SeleniumWebMagic之Spider进阶
摘要:有一个模块其中实现了一个。但是感觉灵活性不大。接口如下它会获得一个实例,你可以在里面进行任意的操作。本部分到此结束。 webmagic有一个selenium模块,其中实现了一个SeleniumDownloader。但是感觉灵活性不大。所以我就自己参考实现了一个。 首先是WebDriverPool用来管理WebDriver池: import java.util.ArrayList; im...
摘要:获取正在运行的线程数,用于状态监控。之后初始化组件主要是初始化线程池将到中,初始化开始时间等。如果线程池中运行线程数量为,并且默认,那么就停止退出,结束爬虫。 本系列文章,针对Webmagic 0.6.1版本 一个普通爬虫启动代码 public static void main(String[] args) { Spider.create(new GithubRepoPageP...
摘要:包主要实现类,这是一个抽象类,实现了通用的模板方法,并在方法内部判断错误重试去重处理等。重置重复检查就是清空,获取请求总数也就是获取的。至于请求总数统计,就是返回中维护的的大小。 Scheduler是Webmagic中的url调度器,负责从Spider处理收集(push)需要抓取的url(Page的targetRequests)、并poll出将要被处理的url给Spider,同时还负责...
摘要:优雅的使用框架,爬取唐诗别苑网的诗人诗歌数据同时在几种动态加载技术中对比作选择虽然差不多两年没有维护,但其本身是一个优秀的爬虫框架的实现,源码中有很多值得参考的地方,特别是对爬虫多线程的控制。 优雅的使用WebMagic框架,爬取唐诗别苑网的诗人诗歌数据 同时在几种动态加载技术(HtmlUnit、PhantomJS、Selenium、JavaScriptEngine)中对比作选择 We...
阅读 980·2023-04-25 14:20
阅读 1849·2021-11-24 10:20
阅读 3743·2021-11-11 16:55
阅读 2877·2021-10-14 09:42
阅读 3446·2019-08-30 15:56
阅读 1101·2019-08-30 15:55
阅读 1052·2019-08-30 15:44
阅读 743·2019-08-29 11:28