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实现监控windows服务并自动启动服务示例
Apr 17 Python
python中的列表推导浅析
Apr 26 Python
python爬虫实现教程转换成 PDF 电子书
Feb 19 Python
Python编程实现二分法和牛顿迭代法求平方根代码
Dec 04 Python
numpy中索引和切片详解
Dec 15 Python
Python实现一个服务器监听多个客户端请求
Apr 12 Python
python操作redis方法总结
Jun 06 Python
Python中按值来获取指定的键
Mar 04 Python
PyQT实现菜单中的复制,全选和清空的功能的方法
Jun 17 Python
Python 从subprocess运行的子进程中实时获取输出的例子
Aug 14 Python
python统计指定目录内文件的代码行数
Sep 19 Python
pycharm安装及如何导入numpy
Apr 03 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的fsockopen、pfsockopen函数被主机商禁用的解决办法
2014/07/08 PHP
CI框架中通过hook的方式实现简单的权限控制
2015/01/07 PHP
[原创]php实现 data url的图片生成与保存
2016/12/04 PHP
php面向对象之反射功能与用法分析
2017/03/29 PHP
TreeView 用法(有代码)(asp.net)
2011/07/15 Javascript
图片上传判断及预览脚本的效果实例
2013/08/07 Javascript
基于jquery插件制作左右按钮与标题文字图片切换效果
2013/11/07 Javascript
jQuery实现带有动画效果的回到顶部和底部代码
2015/11/04 Javascript
原生JavaScript实现异步多文件上传
2015/12/02 Javascript
老生常谈遮罩层 滚动条的问题
2016/04/29 Javascript
深入理解jquery跨域请求方法
2016/05/18 Javascript
Angular项目从新建、打包到nginx部署全过程记录
2017/12/09 Javascript
webpack项目轻松混用css module的方法
2018/06/12 Javascript
JavaScript实现的拼图算法分析
2019/02/13 Javascript
JS实现公告上线滚动效果
2021/01/10 Javascript
[04:16]完美世界DOTA2联赛PWL S2 集锦第一期
2020/11/23 DOTA
Python爬取附近餐馆信息代码示例
2017/12/09 Python
Python Requests模拟登录实现图书馆座位自动预约
2018/04/27 Python
基于Django URL传参 FORM表单传数据 get post的用法实例
2018/05/28 Python
Python随机函数库random的使用方法详解
2019/08/21 Python
Python对接 xray 和微信实现自动告警
2019/09/17 Python
利用PyCharm操作Github(仓库新建、更新,代码回滚)
2019/12/18 Python
Python 常用日期处理 -- calendar 与 dateutil 模块的使用
2020/09/02 Python
解决Pycharm 运行后没有输出的问题
2021/02/05 Python
教你使用Canvas处理图片的方法
2017/11/28 HTML / CSS
澳大利亚领先的时尚内衣零售商:Bras N Things
2020/07/28 全球购物
简短的公司员工自我评价分享
2013/11/13 职场文书
清华大学自主招生自荐信
2014/01/29 职场文书
志愿者服务感言
2014/02/27 职场文书
社区党建工作方案
2014/06/10 职场文书
求职教师自荐书
2014/06/19 职场文书
学习优秀党员杨宗兴先进事迹材料思想汇报
2014/09/14 职场文书
JavaScript 去重和重复次数统计
2021/03/31 Javascript
python开发飞机大战游戏
2021/07/15 Python
python井字棋游戏实现人机对战
2022/04/28 Python
mysql 排序失效
2022/05/20 MySQL