python3学习-lxml模块
在爬虫的学习中,我们爬取网页信息之后就是对信息项匹配,这个时候一般是使用正则。但是在使用中发现正则写的不好的时候不能精确匹配(这其实是自己的问题!)所以就找啊找。想到了可以通过标签来进行精确匹配岂不是比正则要快。所以找到了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() |
python3学习-lxml模块的更多相关文章
- python3爬虫lxml模块的安装
1:在下载lxml之前,要先查看python的版本信息, 在CMD命令行输入python 再输入import pip; print(pip.pep425tags.get_supported()) -- ...
- python3学习-Queue模块
python标准库中带有一个Queue模块,顾名思义,队列.该模块也衍生出一些基本队列不具有的功能. 我们先看一下队列的方法: put 存数据 get 取数据 empty 判断队列是否为空 qsize ...
- python3学习-logging模块
1.logging模块的使用非常简单,引入模块就可以使用. import logging logging.debug('This is debug message') logging.info('Th ...
- python3学习-pickle模块
pickle提供了一个简单的持久化功能.可以将对象以文件的形式存放在磁盘上. 基本接口: pickle.dump(obj, file, [,protocol]) 注解:将对象obj保存到文件file中 ...
- Python3学习笔记(urllib模块的使用)转http://www.cnblogs.com/Lands-ljk/p/5447127.html
Python3学习笔记(urllib模块的使用) 1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, ...
- Python爬虫基础——XPath语法的学习与lxml模块的使用
XPath与正则都是用于数据的提取,二者的区别是: 正则:功能相对强大,写起来相对复杂: XPath:语法简单,可以满足绝大部分的需求: 所以,如果你可以根据自己的需要进行选择. 一.首先,我们需要为 ...
- 洗礼灵魂,修炼python(71)--爬虫篇—【转载】xpath/lxml模块,爬虫精髓讲解
Xpath,lxml模块用法 转载的原因和前面的一样,我写的没别人写的好,所以我也不浪费时间了,直接转载这位崔庆才大佬的 原帖链接:传送门 以下为转载内容: --------------------- ...
- Python3学习(2)-中级篇
Python3学习(1)-基础篇 Python3学习(2)-中级篇 Python3学习(3)-高级篇 切片:取数组.元组中的部分元素 L=['Jack','Mick','Leon','Jane','A ...
- Python3学习之路~0 目录
目录 Python3学习之路~2.1 列表.元组操作 Python3学习之路~2.2 简单的购物车程序 Python3学习之路~2.3 字符串操作 Python3学习之路~2.4 字典操作 Pytho ...
随机推荐
- Adding Cues (线索、提示) to Binary Feature Descriptors for Visual Place Recognition 论文阅读
对于有想法改良描述子却无从下手的同学还是比较有帮助的. Abstract 在这个文章中我们提出了一种嵌入continues and selector(感觉就是analogue和digital的区别)线 ...
- POJ 1485:Fast Food(dp)&& 面试题
题目链接 题意 给出 n 个餐厅,m 个停车场,现在要将 n 个餐厅中的 m 个变成停车场,使得每个餐厅到最近的停车场的距离之和最短,输出哪个餐厅变成停车场和它服务哪些餐厅,还有最短距离之和. 思路 ...
- 寻觅Azure上的Athena和BigQuery (二):神奇的PolyBase
前情回顾 在“数据湖”概念与理论逐渐深入人心的今天,面向云存储的交互式查询这个需求场景显得愈发重要.这是因为原生的云存储(主要指S3这样的对象存储)既能够容纳大容量的明细数据,又能在性能和成本间取得一 ...
- Maxon Cinema 4D Studio R20.026 中文破解版下载
Maxon Cinema 4D Studio,是 Maxon 公司开发的一款专业三维工具包,如果你需要一个得力助手,轻松快速创建令人称赞的 3D 图形作品,那么这是你的最佳选择. 为何使用Cinema ...
- 剑指offer第二版-10.斐波那契数列
面试题10:斐波那契数列 题目要求: 求斐波那契数列的第n项的值.f(0)=0, f(1)=1, f(n)=f(n-1)+f(n-2) n>1 思路:使用循环从下往上计算数列. 考点:考察对递归 ...
- 自定义ApplicationContextInitializer接口实现
简介 ApplicationContextInitializer是Spring框架提供的接口, 该接口的主要功能就是在接口ConfigurableApplicationContext刷新之前,允许用户 ...
- 管Q某犇借的对拍
#include<iostream> #include<windows.h> using namespace std; int main() { while(1) { syst ...
- Supalle-Admin-Layout,一个PC端和手机端都合适用的后台页面模板
Supalle-Admin-Layout主要使用有Vue.Element-UI.layui-icon,Ajax实现采用Fetch(是有这个打算,不过目前是jQuery.). 源码地址:https:// ...
- python课堂整理9---函数1
函数 一. 函数就是为了完成某一个特定的功能 形式参数不占运行空间,只有传入实参后才占,用完立刻释放空间. 函数一遇到 return 就结束掉了 函数名() :运行函数,有返回值的话用变量承接 def ...
- 爬虫之解析库pyquery
初始化 安装: pip install pyquery 字符串的形式初始化 html = """ <html lang="en"> < ...