1.jsoup简介
jsoup 是一款Java 的HTML解析器。
2.特点
它提供了一套非常省力的API,可通过类似于jQuery的操作方法来取出和操作数据。
区别:
1):eq(n)
jsoup:元素在父元素中的index
selector:元素在结果集中的index
3.封装的目的
把数据提取和业务逻辑分离开来,使代码更清晰,易懂,便于维护
4.组件图
Extractor:对jsoup的简单封装,依赖与jsoup和Apache Commons库
Spring:实现了与Spring的集成
Digester+XSD:实现了核心类HTMLExtractor的XML配置
5.类图
HTMLExtractor:核心类,解析HTML页面的入口
BeanExtractor:将HTML元素解析为一简单的JAVABEAN,暂不支持有参构造方法
ListExtractor:将HTML元素解析为一List对象
PropertyExtractor:将HTML元素解析为一JAVA基本类型对象或者Date对象
6.简单的处理流程
PageProcessor:用于处理某一类型的页面,可能会调用其它的PageProcessor
HTMLExtractor:用于解析该类型页面,提取出相关数据
Convertor:将HTMLExtractor提取出来的数据转化了内部可用的JAVABean,其中可能会调用Service
Service:对JAVABean进行处理的业务逻辑
7.问题
开始以为封装的HTMLExtractor能够实现从页面到JAVABean的直接转化,在实践中发现目标JAVABean的属性在HTML页面中经常和其它的属性或者其它提示性文字混合在一起呈现,无法直接转化,并且某些属性可能会依赖于Service在已有数据中进行获取。
8.结论
对jsoup的简单封装实现虽然使代码更清晰,易懂,但是由于属性进行了两次set,第一次在HTMLExtractor中,第二次在Convertor中,降低了抓取效率,但是个人觉得是值得的。
9.源代码
附件中的jsoup.rar