Python爬虫之xlml解析库(全面了解)


Posted in Python onAugust 08, 2017

1.Xpath

Xpath是一门在XML中查找信息的语言,可用来在XML文档中对元素和属性进行遍历。XQuery和xpoint都是构建于xpath表达之上

2.节点

父(parent),子(children),兄弟(sibling),先辈(ancetstor),后代(Decendant)

3.选取节点

路径表达式

表达式 描述 路径表达式 结果
nodename 选取此节点上的所有的子节点 bookstore 选取bookstore元素的所有子节点
/ 从根节点上选取 /bookstore 选取根元素bookstore,为绝对路径
// 从匹配选择的当前节点选择文档中的节点,不考虑位置 //book 选取所有的book子元素,而不管他们在文档的位置
. 选取当前节点 bookstore//book 选择bookstore后代中所有的book元素
.. 选取当前节点的父节点
@ 选取属性 //@lang 选取名为lang的所有属性

谓语

谓语用来查找某个特定的节点或者包含某个指定的值的节点

谓语被嵌在方括号中

路径表达式 结果
/bookstore/book[1] 选取属于bookstore子元素的第一个book元素
/bookstore/book[last()] 选取属于bookstore子元素的最后book元素
/bookstore/book[last()-1] 选取属于bookstore子元素的倒数第二个book元素
/bookstore/book[position() 选取最前面的两个属于bookstore元素的子元素的book元素
//title[@lang='eng'] 选取所有的title元素,并且这些元素拥有值为eng的lang属性
/bookstore/book[price>35.0] 选取bookstore元素的所有book元素,且其中的price值大于35.0

选取未知节点(通配符)

*

匹配任何 元素节点

@*

匹配任何属性节点

node()

匹配任何类型的节点

4.lxml用法

#!/usr/bin/python
#_*_coding:utf-8_*_

from lxml import etree

text='''
<div>
 <ul>
  <li class="item-0"><a href="link1.html" rel="external nofollow" rel="external nofollow" >first item</a></li>
  <li class="item-1"><a href="link2.html" rel="external nofollow" >second item</a></li>
  <li class="item-inactive"><a href="link3.html" rel="external nofollow" >third item</a></li>
  <li class="item-1"><a href="link4.html" rel="external nofollow" >fourth item</a></li>
  <li class="item-0"><a href="link5.html" rel="external nofollow" >fifth item</a>
 </ul>
</div>
  '''

# html=etree.HTML(text) #html对象,存储在地址中,有自动修正功能
# result=etree.tostring(html) #将html对象转化为字符串

html=etree.parse('hello.html')
# result=etree.tostring(html,pretty_print=True)
# print result
print type(html)
result= html.xpath('//li')
print result
print len(result)
print type(result)
print type(result[0])
print html.xpath('//li/@class') # 获取li标签下的所有的class
print html.xpath('//li/a[@href="link1.html" rel="external nofollow" rel="external nofollow" ]') #获取li标签下href为link1的<a>标签
print html.xpath('//li//span') #获取li标签下所有的span标签
print html.xpath('//li[last()-1]/a')[0].text #获取倒数第二个元素的内容

以上这篇Python爬虫之xlml解析库(全面了解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的闭包详细介绍和实例
Nov 21 Python
python爬虫爬取淘宝商品信息(selenum+phontomjs)
Feb 24 Python
python list转矩阵的实例讲解
Aug 04 Python
基于Python3.6+splinter实现自动抢火车票
Sep 25 Python
python多线程抽象编程模型详解
Mar 20 Python
Python对ElasticSearch获取数据及操作
Apr 24 Python
python中metaclass原理与用法详解
Jun 25 Python
docker django无法访问redis容器的解决方法
Aug 21 Python
python栈的基本定义与使用方法示例【初始化、赋值、入栈、出栈等】
Oct 24 Python
pytorch 利用lstm做mnist手写数字识别分类的实例
Jan 10 Python
Python基础之字典常见操作经典实例详解
Feb 26 Python
pytorch交叉熵损失函数的weight参数的使用
May 24 Python
Python 3中print函数的使用方法总结
Aug 08 #Python
Python读取sqlite数据库文件的方法分析
Aug 07 #Python
Python实现读写sqlite3数据库并将统计数据写入Excel的方法示例
Aug 07 #Python
django实现前后台交互实例
Aug 07 #Python
python扫描proxy并获取可用代理ip的实例
Aug 07 #Python
python的多重继承的理解
Aug 06 #Python
python中 chr unichr ord函数的实例详解
Aug 06 #Python
You might like
上传文件先创建目录 再上传到目录里面去
2010/12/29 PHP
php导出word格式数据的代码实例
2013/11/25 PHP
php中静态类与静态变量用法的区别分析
2015/01/15 PHP
php arsort 数组降序排序详细介绍
2016/11/17 PHP
PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】
2017/04/27 PHP
JavaScript中创建对象和继承示例解读
2014/02/12 Javascript
jQuery中选择器小问题(新人难免遇到)
2014/03/31 Javascript
javascript如何实现360度全景照片问题汇总
2016/04/04 Javascript
javascript中JSON.parse()与eval()解析json的区别
2016/05/19 Javascript
jQuery 实现ajax传入参数含有特殊字符的方法总结
2016/10/17 Javascript
js读取json文件片段中的数据实例
2017/03/09 Javascript
微信小程序picker组件下拉框选择input输入框的实例
2017/09/20 Javascript
微信小程序富文本渲染引擎的详解
2017/09/30 Javascript
nodejs基础之buffer缓冲区用法分析
2018/12/26 NodeJs
vue前端框架—Mint UI详解(更适用于移动端)
2019/04/30 Javascript
[01:08]DOTA2次级职业联赛 - Shield战队宣传片
2014/12/01 DOTA
[36:16]完美世界DOTA2联赛PWL S3 access vs Rebirth 第一场 12.19
2020/12/24 DOTA
Python常用模块用法分析
2014/09/08 Python
对于Python的Django框架使用的一些实用建议
2015/04/03 Python
python 搭建简单的http server,可直接post文件的实例
2019/01/03 Python
django框架用户权限中的session缓存到redis中的方法
2019/08/06 Python
Pytorch反向求导更新网络参数的方法
2019/08/17 Python
python实现名片管理器的示例代码
2019/12/17 Python
Python中and和or如何使用
2020/05/28 Python
python3:excel操作之读取数据并返回字典 + 写入的案例
2020/09/01 Python
如何使用Django Admin管理后台导入CSV
2020/11/06 Python
最新PyCharm从安装到PyCharm永久激活再到PyCharm官方中文汉化详细教程
2020/11/17 Python
事务机电主管工作职责
2014/02/25 职场文书
注册资产评估专业求职信
2014/07/16 职场文书
甘南现象心得体会
2014/09/11 职场文书
完整版商业计划书
2014/09/15 职场文书
明星邀请函
2015/02/02 职场文书
歌剧魅影观后感
2015/06/05 职场文书
Vue.js 带下拉选项的输入框(Textbox with Dropdown)组件
2021/04/17 Vue.js
Java中Quartz高可用定时任务快速入门
2022/04/03 Java/Android
Mysql表数据比较大情况下修改添加字段的方法实例
2022/06/28 MySQL