和其他爬虫框架一样,VS也实现了自己内置的抽取器封装,讲道理每个人设计这个模块的时候都说自己的是最好的。我也一样,我觉得我设计的抽取器是目前我见到过的最好的。VS在数据抽取上面做了两个尝试,分别是SipSoup和TableEvaluator。

SipSoup是xpath的实现,同样的他也是在Jsoup上面实现了Xpath。可能不少朋友想要问和Xsoup或者JsoupXpath有什么区别,讲真如果他们的比较好用我并不会自己设计一套。来一个客观评价吧。XSoup是黄大大第一次基于JSoup对Xpath实现的尝试(我看到是第一次)。两年前我大三,在公司实习,刚刚接触爬虫,对黄大大的XSoup炒鸡崇拜,曾经在公司分享过XSoup,当时就想看看源码,不过后来由于技术路线变了,很久没有搞爬虫了。然后现在看来,XSoup是走了一条不归路,XSoup的技术路线存在瓶颈,他的抽取模型完全模仿Jsoup的css query实现,但是css query的抽取模型并不能实现Xpath的轴函数,理论就是JSoup的css query模型是有子孙到祖先来实现,人类的习惯是祖先到子孙。这就导致基于css query模型实现xpath,必须对xpath抽取器逆向建模(反人类的思维),同样因为这个原因,不可能跟进函数的输出计算函数的输入,所以XSoup是不可能在现有的模型结构上实现函数的逆向模型,也就不可能实现轴函数了。就算不实现轴,XSoup的功能扩展也是非常麻烦。当前,对于XSoup支持的语法,大多数场景他的性能应该会优于SipSoup,不知道这是不是JSoup作者当时思考的方式

对于JsoupXpath呢,这还是一个不错的项目,SipSoup本身也是基于JSoupXpath重构而来,但是JSoupXpath代码结构确实需要整理一下,关于抽取器模块,那几个大循环。关于谓语模块。还有就是在运行时报错,编译不报错,快速失败原则啊。普通用法,SipSoup和JsoupXpath看不出大的差别,但是在你发现想实现某个功能的时候,恰恰JsoupXpath没有,也许SipSoup就会有哦。

results matching ""

    No results matching ""