一、xpath 语法
使用方式:
使用// 获取整个页面当中的元素,然后谢标签名,然后再写谓词进行提取,比如:
//title[@lang='en']
需要注意的知识点:
1、/和//的区别:/代表只获取子节点,//获取子孙节点;
2、container:有时候某个属性中包含了多个值,那么可以使用container函数,示例如下:
//title[contains(@lang.'en')]
3、谓词中下标是从1开始的,不是从0开始的
表达式 | 描述 | 实例 | 结果 |
---|---|---|---|
nodename | 选取此节点的所有字节点 | bookstore | 选取bookstore 下的所有子节点 |
/ | 如果在最前面,代表从跟节点选取,否则选择某节点下的某个节点 | /bookstore | 选根元素下所有的/bookstore节点 |
// | 从全局节点中选择节点,随便在哪个位置 | //book | 从全局节点中找到所有的book节点 |
@ | 选取某个节点的属性 | //book[@price] | 选取所有拥有price属性的book节点 |
@* | 匹配任意节点中的属性 | //book[@*] | 选取所有带有属性的book元素 |
* | 匹配任意节点 | /bookstore/* | 选取bookstore下的所有子元素 |
/bookstore/book[1] | 选取属于bookstore子元素的第一个book元素 | ||
/bookstore/book[last()] | 选取属于bookstore子元素的最后一个book元素 | ||
/title[@lang] | 选取所有拥有名为lang的属性的title元素 | ||
/title[@lang=‘eng’] | 选取所有title元素,且这些元素拥有值为eng的lang属性 |
二、正则表达式
字符 | 匹配 |
---|---|
. | 匹配任意字符(除了\n) |
[ ] | 匹配中括号中的某一项 |
\d / \D | 匹配数字/非数字 |
\s / \S | 匹配空白/非空白字符 |
\w | 匹配a-z和A-Z以及数字和下划线 |
* | 匹配前一个字符0次或者无限次 |
+ | 匹配前一个字符1次或者无限次 |
? | 匹配前一个字符0次或者1次 |
^ | 匹配字符串开头 |
$ | 匹配字符串结尾 |
\A/ \Z | 指定的字符串匹配必须出现在开头/结尾 |
{m}/{m,n} | 匹配前一个字符m次或者n次 |
*? /+? /?? | 匹配模式变为非贪婪(尽可能少匹配字符) |