3.爬虫数据提取——Xpath语法

爬虫数据提取——Xpath语法

一、写在前面

HTML页面是由标签构成的,这些标签就像整个族谱一样排列有序,比如:

3.爬虫数据提取——Xpath语法

xxx ->> 太爷爷 ->> 爷爷 ->> 爸爸 ->> 儿子 ->> 孙子 ->> xxx

xxx ->> body ->> script & [email protected]='wrapper'等 ->> script & [email protected]='head'等 ->> [email protected]="head_wrapper" ->>  3个div ->> xxx

【如果在中间有分叉,可以理解为家族的旁系,一个爷爷有两个儿子,然后分家了】

总结:所有的HTML标签都有很强的层级关系,正是基于这种层级关系,Xpath语法能够选择出我们想要的数据。

 

二、Xpath语法

1.节点选取

表达式  描述 用法 说明
nodename 选取此节点的所有子节点 div 选取div下的所有标签
// 从全局节点中选择节点,任意位置均可 //div 选取整个HTML页面的所有div标签
/ 选取某个节点下的节点 //head/title 选取head标签下的title标签
@ 选取带某个属性的节点 //div[@id] 选择带有id属性的div标签
. 当前节点下 ./span 选择当前节点下的span标签【代码中威力强大

2.谓语

表达式 用法说明

         //head/meta[1]

         //head/meta[k]

                选择所有head下的第一个meta标签

               选择所有head下的第k个meta标签

//head/meta[last()] 选择所有head下的最后一个meta标签
//head/meta[position()<3] 选择所有head下的前两个meta标签
//div[@id] 选择带有id属性的div标签
//div[@id='u1'] 选择所有拥有id=u1的div标签

3.通配符

通配符 描述 示例 结果
* 匹配任意节点 //div[@id='u1']/* 选择所有拥有id=u1的div标签下的所有节点
@* 匹配节点中的任何属性

      //meta[@*]

         //a[@*]

                    选择所有拥有属性的meta标签

                    选择所有拥有属性的meta标签

4.选取多个路径

使用  |   来表示选择多个路径:

eg:   //meta | // title   ->> 选择所有的meta和title.