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选择。

选择器部分到此结束吧。

下篇主题待定。


xbynet
1k 声望124 粉丝

不雨花犹落,无风絮自飞