火车浏览器中Xpath的四种函数使用技巧

在使用火车浏览器采集网页信息的时候,我们会频繁用到Xpath来定位元素,因为Xpath的功能之强大,只要网页中出现的信息都可以定位到,方法也有很多,但是有些小的技巧一旦掌握就会事半功倍,大发今天就介绍下Xpath中最实用的四个函数以及使用技巧:

一、Position函数

Position()函数用于返回当前节点的位置的数字,位于第多少个。

具体实例:

比如我么要定位下面这个网页截图中的表格元素

火车浏览器中Xpath的四种函数使用技巧

可以看到,使用Xpath定位元素后把表格头部和分页列表也包含进去,我们想去掉这两行,用Position函数最简单。

之前的定位语法:

.//*[@id=’ctl00_Content_GridView1′]/tbody/tr

使用Position函数去掉头尾两行语法:

.//*[@id=’ctl00_Content_GridView1′]/tbody/tr[position()<17][position()>1]

这样就把首位两行我们不要需要的信息给过滤掉,这里position()<17和position()>1分别表示定位元素从第2行开始第16行结束,完美的实现了定位我们需要的信息。

火车浏览器中Xpath的四种函数使用技巧

二、Not函数

Not(boolean)函数表示对布尔值取反。

具体实例:

很多时候我们都会采集文章,正文一般都是图文结合形式,这里就需要我们只定位文字去而除图片

火车浏览器中Xpath的四种函数使用技巧

我们会发现定位文章正文后发现图片也被包含进去了,此处使用Not函数最方便。

之前的定位语法:

.//*[@id=’main_content’]/p

使用not函数去掉文章中的图片语法:

.//*[@id=’main_content’]/p[not(@class=”detailPic”)][not(@class=”picIntro”)]

这样会在定位文章正文的时候把图片给过滤掉,其中not(@class=”detailPic”)和not(@class=”picIntro”)表示去除p标签中类名为detailPic和picIntro的信息。

火车浏览器中Xpath的四种函数使用技巧

三、Last函数

Last() 返回当前上下文中的最后一个节点的位置号数,可以使用递减定位需要的位置,比如 Last()-1表示返回当前上下文中最后一个节点上一个位置的号数。

具体实例:

我们在获取分页列表的时候需要定位到最后一个页面,比如下图中的第七页

火车浏览器中Xpath的四种函数使用技巧

这时使用Last函数可快速定位。

之前的定位语法:

.//*[@id=’ctl00_Content_GridView1′]/tbody/tr[17]/td/table/tbody/tr/td

使用last函数定位到最后一页语法:

.//*[@id=’ctl00_Content_GridView1′]/tbody/tr[17]/td/table/tbody/tr/td[last()]

这样就会直接定位到最后一个页码,同理我们要定位倒数第二页就是可以用last()-1。

火车浏览器中Xpath的四种函数使用技巧

四、Contains函数

Contains(string1,string2) 如果字串string1包含string2的所有字符则返回true,否则返回false。

具体实例:

我们在做百度知道的时候会有个标签选择,系统会根据问题生成相关标签让我们选择,如图

火车浏览器中Xpath的四种函数使用技巧

默认状态下是选择“浏览器”这个标签,如果我们想选取“交通”这个标签就需要用到Contains函数。

之前的定位语法:

.//span[@class=’tag-list’]

选取关键词后的语法:

.//span[@class=’tag-list’]/span[contains(.,’交通’)]

这时,我们就会发现Xpath定位到了我们想要的标签,contains(.,’交通’)的意思就是获取span块中含有“交通”关键词的标签。

火车浏览器中Xpath的四种函数使用技巧

扩展一下,如果我们未知生成的标签有哪些,只是选取系统给的标签,则语法如下:

.//span[@class=’tag-list’]/span[contains(@class,’selected’)]

效果如下:

火车浏览器中Xpath的四种函数使用技巧

这样就可以更方便的自动选取,contains(@class,’selected’)的意思则是选取span块类名中含有“selected”的标签。

原创文章,作者:大发贱志,如若转载,请注明出处:https://bigfa.com/69.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注