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实现通过shelve修改对象实例
Sep 26 Python
使用python开发vim插件及心得分享
Nov 04 Python
Python中浅拷贝copy与深拷贝deepcopy的简单理解
Oct 26 Python
pytorch对可变长度序列的处理方法详解
Dec 08 Python
如何使用Python自动控制windows桌面
Jul 11 Python
用Python获取摄像头并实时控制人脸的实现示例
Jul 11 Python
Python实现二叉树的最小深度的两种方法
Sep 30 Python
TensorFlow2.X使用图片制作简单的数据集训练模型
Apr 08 Python
python将unicode和str互相转化的实现
May 11 Python
Python环境管理virtualenv&amp;virtualenvwrapper的配置详解
Jul 01 Python
Python常遇到的错误和异常
Nov 02 Python
详细介绍python操作RabbitMq
Apr 12 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
PHP中一个控制字符串输出的函数
2006/10/09 PHP
php中使用array_filter()函数过滤空数组的实现代码
2014/08/19 PHP
模仿jQuery each函数的链式调用
2009/07/22 Javascript
jquery中:input和input的区别分析
2011/07/13 Javascript
解决自定义$(id)的方法与jquery选择器$冲突的问题
2014/06/14 Javascript
NodeJS制作爬虫全过程(续)
2014/12/22 NodeJs
jquery右下角自动弹出可关闭的广告层
2015/05/08 Javascript
详解iframe与frame的区别
2016/01/13 Javascript
js实现短信发送倒计时功能(正则验证)
2017/02/10 Javascript
Bootstrap实现的经典栅格布局效果实例【附demo源码】
2017/03/30 Javascript
nodejs使用express创建一个简单web应用
2017/03/31 NodeJs
React如何避免重渲染
2018/04/10 Javascript
详解webpack编译速度提升之DllPlugin
2019/02/05 Javascript
react项目如何使用iconfont的方法步骤
2019/03/13 Javascript
ES6知识点整理之数组解构和字符串解构的应用示例
2019/04/17 Javascript
vue实现滑动超出指定距离回顶部功能
2019/07/31 Javascript
Node 模块原理与用法详解
2020/05/13 Javascript
JavaScript React如何修改默认端口号方法详解
2020/07/28 Javascript
JQuery Ajax如何实现注册检测用户名
2020/09/25 jQuery
vue中h5端打开app(判断是安卓还是苹果)
2021/02/26 Vue.js
[00:32]DOTA2上海特级锦标赛 COL战队宣传片
2016/03/04 DOTA
[14:19]2018年度COSER大赛-完美盛典
2018/12/16 DOTA
Python的多态性实例分析
2015/07/07 Python
Python性能提升之延迟初始化
2016/12/04 Python
python中set()函数简介及实例解析
2018/01/09 Python
你可能不知道的Python 技巧小结
2020/01/29 Python
python else语句在循环中的运用详解
2020/07/06 Python
Django修改app名称和数据表迁移方案实现
2020/09/17 Python
python 爬取百度文库并下载(免费文章限定)
2020/12/04 Python
解决Pycharm 运行后没有输出的问题
2021/02/05 Python
能否解释一下XSS cookie盗窃是什么意思
2012/06/02 面试题
秘书行业自我鉴定范文
2013/12/30 职场文书
大学毕业感言
2014/01/10 职场文书
学校财务管理制度
2015/08/04 职场文书
小学教师教学随笔
2015/08/14 职场文书
pytest进阶教程之fixture函数详解
2021/03/29 Python