本文用来讲解xpath的入门基础,本教材是xpath入门2,建议大家从入门1教程开始学习Xpath的教程适合对采集器已经有一些基础的用户来学习。Xpath:是一种路径查询语言,简单的说就是利用一个路径表达式找到我们需要的数据位置。Html:超文本标记语言,是用来描述网页的一种语言。主要用于控制数据的显示和外观。HTML文档也被称为网页。Xpath专用于xml中沿着路径查找数据用的,但是采集器内部有一套针对Html的Xpath引擎,使得直接用Xpath就能精准的查找定位网页里面的数据。
例如下图通过某狐浏览器的firebug、firepath查看网页源码。查看方法参考“xpath入门1”教程
完整的HTML文件至少包括标签、
标签、Html常见属性属性是用来修饰标签的,放在开始标签里面class规定元素的类名,大多数时候用于指定样式表中的类id唯一标识一个元素的属性,在html里面必须是唯一的href指定超链接目标的urlsrc图像文件的url例如//span[@class='itemWithIcon calendar']通过class这个属性就匹配到了当前页面所有的日期。
Xpath常见写法text()文本定位位置例如//a[text()='下一页 » ']通过源码中文本“下一页 »”就匹配到了,这个text()是需要精确匹配源码中的文本的
contains()用来判断字符串的一部分contains(text(),'')contains(@class,'') 这个contains是用来模糊匹配的,可以看到源码中显示的是“下一页 »”,用contains只需要“下一页”3个字就可以了
positon()表示节点的序号last()//div[last()]
首先看到上图中xpathhtml/body/div[1]/div[3]/div/div/div[2]/div[1]/div匹配到了网页中的所有教程,但是我们如果只需要里面几项的时候就可以使用position()如下图:通过html/body/div[1]/div[3]/div/div/div[2]/div[1]/div[position()=5],里面的[position()=5]就可以指定是某个具体的教程了。
following-sibling当前元素的兄弟元素这个可以参看数字翻页的例子哈 and\or\notand 并且与关系or 并且或关系not 不是例如下面的html/body/div[1]/div[3]/div/div/div[2]/div[1]/div[2]/div/a[@style and @href],其中的[@style and @href]就代表找到同时具有这两个style和href属性的a标签