网站内容采集器V4.1.0使用XPath采集文字要避免一个bug

网站内容采集器工具包MetaSeeker从V4.0.0版本开始增加了自定义XPath规则的功能,对原有的由程序完全自主生成网站内容采集规则的能力进行补充和增强。但是,如果自定义的XPath表达式使用字符串处理函数采集文字内容,会遇到一个bug。

情景

例如,使用XPath函数substring-after()等,生成的网站内容采集指令文件是正常的,也就是说网络爬虫和网站内容采集器DataScraper的运行是正常的,用户能够准确且海量地采集网站内容。但是,MetaStudio生成的信息结构描述文件不正确,错误地将用户输入的自定义XPath表达式当作DOM节点定位表达式,其后果就是网站内容采集规则生成器MetaStudio不能再一次将先前生成的信息结构加载到工作台上进行修改和编辑,需要长年采集网站内容并锁定目标网站页面结构变化的用户会感觉到使用不便。



原因

此Bug不总是遇到,因为多数情况下用户自定义的XPath表达式是为了采集某个DOM元素节点的内容,不会遇到这个bug,但是,一下熟练用户可能会用自定义XPath表达式处理网站文字内容,有点像使用正则表达式一样,进行文字匹配,并采集文字内容片断,此时,XPath表达式并不是定位到某个DOM元素节点,而是直接数据一个字符串,这样,bug就遇到了。



修正方法

网站内容采集器工具包MetaSeeker在V4.1.1版本解决了这个bug。当加载以前版本软件生成的信息结构时,如果遇到上述bug错误生成的信息结构内容,则弹出一个编辑框,允许用户修改自定义的XPath表达式,修改成用于定位DOM节点的表达式,这样,MetaStudio就能够成功加载信息结构进行编辑,重新上载信息结构到MetaCamp服务器上时就会用新的正确的信息结构描述文件替换以前的。



高级使用技巧

网站内容采集器工具包MetaSeekerV4.1.1版本还进行了增强,将自定义XPath表达式分成两类:

  • 用于采集网站内容的XPath表达式
  • 用于定位DOM节点的XPath表达式,由MetaStudio用来编辑信息结构并生成网站内容采集规则

缺省情况下,用户自定义的XPath表达式只用来采集网站内容,这样可以方便大众用户的使用,此时,DOM节点定位规则是由数据映射关系计算得出的。对于熟练用户可以自行选择是否另外定义一个XPath专门定位DOM节点,而不使用数据映射关系计算定位规则,以实现一些精确定位,例如,根据网站上特定文字内容进行定位。