python3学习-lxml模块
来源:互联网 发布:父母的神逻辑知乎 编辑:程序博客网 时间:2024/06/03 20:59
在爬虫的学习中,我们爬取网页信息之后就是对信息项匹配,这个时候一般是使用正则。但是在使用中发现正则写的不好的时候不能精确匹配(这其实是自己的问题!)所以就找啊找。想到了可以通过标签来进行精确匹配岂不是比正则要快。所以找到了lxml。
因为lxml是对xml格式的解析,支持html格式,而对于xml格式的解析有一门专用的语言,XPath。XPath用于在xml文档中通过元素和属性进行导航。lxml库也是解析xml文件,所以也应用了XPath语法。我们先学习一下XPath 的标准语法,然后将这些语法知识应用到lxml之中。
大家应该对xml或者是html都不陌生,默认大家都知道,所以就简单介绍。
节点关系
父子节点(Parent children)
<div class="all"> <div class="sub"></div></div>
无需解释。
兄弟节点(sibling)
<div class="all"> <div class="sibling"></div> <div class="sibling"></div></div>
无需解释。
先辈(Ancestor)后代(Descendant)
<div class="grandpa"> <div class="all"> <div class="sibling"></div> <div class="sibling"></div> </div></div>
节点选择
表达式 描述 nodename 选取此节点的所有子节点 / 此路径运算符出现在模式开头时,表示应从根节点选择 // 从当前节点开始递归下降,此路径运算符出现在模式开头时,表示应从根节点递归下降。 . 选取当前节点 .. 选取当前节点的父节点 @ 选取属性 * 通配符.选择所有元素节点与元素名无关 @ 选取属性 @* 选取所有属性 : 命名空间分隔符;将命名空间前缀与元素名或属性名分隔 () 括号运算符(优先级最高),强制运算优先级 [] 应用筛选模式(即谓词,包括”过滤表达式”和”轴(向前/向后)”) | 两个节点集合的联合,eg:/div/a | //div/span @ 选取属性匹配未知节点
通配符 描述 * 匹配任何节点 @* 匹配任何属性节点 node() 匹配任何类型的节点实例
下面我们通过一些例子看一下谓词+表达式的综合:
路径表达式 结果 /node() 根元素下所有的节点(包括文本节点,注释节点等) /text() 查找文档根节点下的所有文本节点 /div/a[1] 选取属于div的第一个a元素 /div/a[1] 选取属于div的第一个a元素 /div/a[last()] 选取属于div的子元素中倒数第一个a元素 /div/a[last()-1] 选取属于div的子元素中倒数第二个a元素 /div/a[position()阅读全文
0 0
- python3学习-lxml模块
- CentOS升级Python3.5并安装lxml等模块
- python3在用pip装lxml模块遇到的问题
- Python3学习(19)--模块
- python3学习-logging模块
- python3学习-pickle模块
- python3学习-Queue模块
- python3.3+lxml+win7_64
- python3 安装lxml 大坑
- python3.5 lxml用法
- python3.5的lxml中没有etree模块的问题解决方法
- PyCharm,python3.5的lxml中没有etree模块的问题解决方法
- python3 threading thread 模块学习
- Python3--Subprocess模块学习总结
- python lxml模块安装
- lxml模块安装失败
- Python3.6 模块学习之random模块
- python3.5安装lxml库
- 【Scikit-Learn 中文文档】线性和二次判别分析
- mysql关于null值的使用
- hibernate_day04_12_HQL多表查询介绍
- 【提醒自己】CodeForces
- 集合collection
- python3学习-lxml模块
- Convert a List to a Comma-Separated String in Java 8
- laserscan数据格式
- 关于MySQL中的information_schema
- 1045. 快速排序(25)--Python
- Java学习13 GUI程序设计(Swing)
- uC/OS-II中OSUnMapTbl数组的推导
- Android 6.0的http
- 掌柜大作战(21):京东线上数据库管理