翻页标志不是文字的抓取方法

网页内容很多则会分成多页,点击“下一页”超链接或者按钮可以看后续网页的内容。MetaSeeker的最大优点是无论分页是有独立网址的还是由AJAX动态生成的没有独立网址的,MetaSeeker的处理方法完全一样,用户不用管分页是静态网页、服务器动态生成的网页还是客户端AJAX动态生成的网页。而采用记号映射方式翻页抓取是最常用的,因为网页上有个明显标志,比如“下一页”,“Next”等等,定位会很准确。但是,并不是每个网站用文字做标志,可能是个图片,而且,也不总是用超链接作为访问下一页的方式,可能用表单(Form)提交。下文用一个样例说明一些MetaStudio的使用技巧。




翻页标志分析和记号线索映射方法


由上图可见:

  1. 翻页标志是个三角形图片
  2. 翻页采用表单提交,使用了image类型的INPUT
  3. 节点映射选择INPUT节点,而不是代表翻页区域的那个TABLE[@class='paging_table'],这是要采用精确点击翻页技巧。
  4. 不要选这个复选框,表示作为记号的节点不是#text()节点
  5. 用src这个节点做记号映射,节点title, value, name等本来也适合做记号,但是有可能翻到最后一页还存在这些节点,就停不下来了


修改定位首选项

按viewSCE按钮,可以看到生成的翻页规则,一开始可能是这样

   //*[@id='contentstandard']/div[position()=2]/form[position()=2]/table[position()=1]/tbody/tr/td[position()=4]/table/tbody/tr/td[position()=3]/input[.//@src="../_inc002/_images/view/paging_next.gif" and position()=1]

这个是XPATH指令,很长,中间有很多position()函数,使用绝对定位,整个表达式的定位起点是一个含有@id='contentstandard'的节点开始的。太长而且绝对定位都会影响适应性,可能翻到后面的分页后就失败了。

可以调整定位首选项以解决这些问题,选择MetaStudio菜单“配置”-〉“首选项”,弹出一个窗口,里面有两个tab,选择“线索定位”那个tab,选中“偏好class”,再按viewSCE,看到的翻页规则

   //*[.//@src="../_inc002/_images/view/paging_next.gif" and @class='vam']