4.5 Jsoup和Xsoup

WebMagic的抽取主要用到了Jsoup和我自己开发的工具Xsoup

4.5.1 Jsoup

Jsoup是一个简单的HTML解析器,同时它支持使用CSS选择器的方式查找元素。为了开发WebMagic,我对Jsoup的源码进行过详细的分析,具体文章参见Jsoup学习笔记

4.5.2 Xsoup

Xsoup是我基于Jsoup开发的一款XPath解析器。

之前WebMagic使用的解析器是HtmlCleaner,使用过程存在一些问题。主要问题是XPath出错定位不准确,并且其不太合理的代码结构,也难以进行定制。最终我自己实现了Xsoup,使得更加符合爬虫开发的需要。令人欣喜的是,经过测试,Xsoup的性能比HtmlCleaner要快一倍以上。

Xsoup发展到现在,已经支持爬虫常用的语法,以下是一些已支持的语法对照表:

Name Expression Support
nodename nodename yes
immediate parent / yes
parent // yes
attribute [@key=value] yes
nth child tag[n] yes
attribute /@key yes
wildcard in tagname /* yes
wildcard in attribute /[@*] yes
function function() part
or a | b yes since 0.2.0
parent in path . or .. no
predicates price>35 no
predicates logic @class=a or @class=b yes since 0.2.0

另外我自己定义了几个对于爬虫来说,很方便的XPath函数。但是请注意,这些函数式标准XPath没有的。

Expression Description XPath1.0
text(n) 第n个直接文本子节点,为0表示所有 text() only
allText() 所有的直接和间接文本子节点 not support
tidyText() 所有的直接和间接文本子节点,并将一些标签替换为换行,使纯文本显示更整洁 not support
html() 内部html,不包括标签的html本身 not support
outerHtml() 内部html,包括标签的html本身 not support
regex(@attr,expr,group) 这里@attr和group均可选,默认是group0 not support

4.5.3 Saxon

Saxon是一个强大的XPath解析器,支持XPath 2.0语法。webmagic-saxon是对Saxon尝试性的一个整合,但是目前看来,XPath 2.0的高级语法,似乎在爬虫开发中使用者并不多。

results matching ""

    No results matching ""