python爬虫知识----数据提取----Xpath和lxml、BeautifulScoup4、正则(二)
添加小程序,兑换各种视频教程/数据资源。
1. 什么是Xpath:是在xml和html文档中查找信息的一门语言,可对xml和html中的元素和属性进行遍历。
2.Xpath开发工具:chrome插件Xpath Helper。firefox插件Xpath Checker。在浏览中的拓展程序中下载,,用于直接在浏览中查找节点下的元素,验证代码xpath的准确性。
3. Xpath语法:
3.1 选取节点:
表达式 | 描述 | 实例 | 结果 |
nodename | 选取此节点的所有字节点 | div | 即选取div下的所有字节点 |
/ | 如果是在最前面,是根节点下的直接字元素,没有返回null,如果不是在最前面,则是选中某个节点下的直接子元素,没有返回null | /htm | 即根节点下的hmtl直接子元素 |
// | 从全局查找所有的的节点 | //div | 查看页面所有的div |
@ | 选某个节点的某个属性 | //img[@src] | 选取所有img节点中有src属性的img节点 |
3.2 谓语:
路径表达式 | 描述 |
/div/span[1] | 选取div下的第一个span元素,默认从1开始,不是从0开始。 |
/div/span[last()] | 选取div下的最后一个span元素。 |
/div/span[postion()<3] | 选取div下的前2个span元素。 |
//div[@id] | 从所有div中选取拥有id属性的div元素。 |
//div[@id=10] | 从所有div中选取拥有id属性等于10的div元素。 |
//div[contains(@class,'box')] | 从所有div中选取class中包含.box属性的div |
3.3 通配符:
通配符 | 描述 | 实例 | 结果 |
* | 匹配任意节点 | /body/* | 匹配body下所有子元素 |
@* | 匹配节点的任何属性 | //div[@*] | 匹配所有div中带任意属性的div。 |
3.4 运算符: <
运算符 | 描述 | 实例 | 返回值 |
---|---|---|---|
| | 计算两个节点集 | //book | //cd | 返回所有拥有 book 和 cd 元素的节点集 |
+ | 加法 | 6 + 4 | 10 |
- | 减法 | 6 - 4 | 2 |
* | 乘法 | 6 * 4 | 24 |
/ | 除法 | 8 / 4 | 2 |
= | 等于 | price=9.80 | 如果 price 是 9.80,则返回 true。 如果 price 是 9.90,则返回 false。 |
!= | 不等于 | price!=9.80 | 如果 price 是 9.90,则返回 true。 如果 price 是 9.80,则返回 false。 |
< | 小于 | price<9.80 | 如果 price 是 9.00,则返回 true。 如果 price 是 9.90,则返回 false。 |
<= | 小于或等于 | price<=9.80 | 如果 price 是 9.00,则返回 true。 如果 price 是 9.90,则返回 false。 |
> | 大于 | price>9.80 | 如果 price 是 9.90,则返回 true。 如果 price 是 9.80,则返回 false。 |
>= | 大于或等于 | price>=9.80 | 如果 price 是 9.90,则返回 true。 如果 price 是 9.70,则返回 false。 |
or | 或 | price=9.80 or price=9.70 | 如果 price 是 9.80,则返回 true。 如果 price 是 9.50,则返回 false。 |
and | 与 | price>9.00 and price<9.90 | 如果 price 是 9.80,则返回 true。 如果 price 是 8.50,则返回 false。 |