
python爬虫 xpath语法笔记
XPath 使用路径表达式来选取 XML 文档中的节点或节点集。节点是通过沿着路径 (path) 或者步 (steps) 来选取的。
使用方式:
使用//获取整个页面中的元素,然后写标签名,然后再写词进行提取
如:
1 |
//div[@class="abc"] |
注意点:
1./和//的区别,/代表只获取直接子节点。//获取子孙节点。一般//用的比较多。当然也要视情况而定
2.contains:当某个属性包含多个值时,那么可以使用’contains’函数如:
1 |
//div[contains(@class,'job_detail')] |
3.谓词中的下标是从1开始的
| 表达式 | 描述 |
|---|---|
| nodename | 选取此节点的所有子节点。 |
| / | 从根节点选取。 |
| // | 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。 |
| . | 选取当前节点。 |
| .. | 选取当前节点的父节点 |
| @ | 选取属性。 |
谓语(Predicates)
谓语用来查找某个特定的节点或者包含某个指定的值的节点。
谓语被嵌在方括号中。
实例
在下面的表格中,我们列出了带有谓语的一些路径表达式,以及表达式的结果:
| 路径表达式 | 结果 |
|---|---|
| /bookstore/book[1] | 选取属于 bookstore 子元素的第一个 book 元素。 |
| /bookstore/book[last()] | 选取属于 bookstore 子元素的最后一个 book 元素。 |
| /bookstore/book[last()-1] | 选取属于 bookstore 子元素的倒数第二个 book 元素。 |
| /bookstore/book[position()<3] | 选取最前面的两个属于 bookstore 元素的子元素的 book 元素 |
| //title[@lang] | 选取所有拥有名为 lang 的属性的 title 元素。 |
| //title[@lang=’eng’] | 选取所有 title 元素,且这些元素拥有值为 eng 的 lang 属性。 |
| /bookstore/book[price>35.00] | 选取 bookstore 元素的所有 book 元素,且其中的 price 元素的值须大于 35.00。 |
| /bookstore/book[price>35.00]/title | 选取 bookstore 元素中的 book 元素的所有 title 元素,且其中的 price 元素的值须大于 35.00。 |
使用lxml解析HTML代码:
1.解析html字符串:使用’lxml.etree.HTML’进行解析。示例代码如下:
1 |
htmlabc =etree.HTML(text) |
2.解析html文件:用’lxml.etree.parse’进行解析。代码如下:
1 |
htmlabc =etree.parse("htmlabc.html") |
这个函数默认使用’XML’解析器,所以如果碰到一些不规范的’HTML’代码时
就会解析错误,这时候就要自己创建’HTML’解析器
1 |
parser = etree.HTMLParser(encoding="utf-8") |




近期评论