| nodename | 选取此节点的所有子节点,nodename是tag名 |
| / | 从根节点选取,/ |
| // | 从文档中选取匹配当前节点的节点,而不考虑它们的位置 |
| . | 选取当前节点 |
| … | 选取当前节点的父节点 |
| @ | 选取属性 |
| @* | 选取所有属性 |
| [@attrib] | 选取具有指定属性的所有元素 |
| [@attrib=‘value’] | 选取指定属性有value的所有元素 |
| [tag] | 选取具有指定元素的直接子节点 |
| [tag=‘text’] | 选取所有具有指定元素并且文本内容是text的节点 |
| | |
| 谓语表 | |
| /bookstore/book[1] | 选取属于bookstore子元素的第一个book元素 |
| /bookstore/book[last()] | 选取属于bookstore子元素的最后一个book元素 |
| /bookstore/book[last()-1] | 选取属于bookstore子元素的倒数第二个book元素 |
| /bookstore/book[position()< 3] | 选取最前面的2个属性bookstore元素的子元素的book元素 |
| //title[@lang] | 选取所有带有lang属性的title元素,方括号是选择条件 |
| //title[@lang=‘eng’] | 选取所有带有lang属性兵器lang属性是eng的title元素,方括号是选择条件 |
| /bookstore/book[price>35.00] | 选取bookstore元素中所有price大于35的book元素 |
| /bookstore/book[price>35.00]/title | 选取bookstore元素中所有price大于35的book元素的中的title元素 |
| | |
| 例子: | |
| result = html.xpath("//li/@class") | 获取标签li里面的属性是class的对应的内容,返回的是列表,可以用索引输出,不需要etree.tostring()方法 |
| result = html.xpath(’//li/a[@href=“link1.html”]’) | 获取标签li下面a标签并且href=link1.html的a标签 返回的是列表可以用索引在etree.tostring(result[索引])输出内容 |
| result = html.xpath("//li//span") | 获取li标签下所有span标签 ,返回的是列表,可以用所用在etree.tostring(result[索引])输出内容,索引是单个数,不可以用区间 |
| result = html.xpath("//li/a//@class") | 获取li标签下的a标签下的所有class属性,不包括li标签内的class属性,返回的是列表,索引输出 |
| result = html.xpath("//li[last()]/a/@href") | 获取最后一个li标签下a标签的href,返回的是列表,索引可以输出 |
| result = html.xpath("//li[last()-1]/a") | 获取倒数第二个li标签下子元素a的标签内容,返回的是列表,etree.tostring(result[索引号]输出 |
| result = html.xpath("//*[@class=‘bold’]") | 获取html中class属性为bold的标签,返回的是列表,etree.tostring(result[索引号]输出 |
| | 以上列表都可以for输出 |