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将图片批量从png格式转换至WebP格式
Aug 22 Python
利用Python画ROC曲线和AUC值计算
Sep 19 Python
Python爬虫代理IP池实现方法
Jan 05 Python
django文档学习之applications使用详解
Jan 29 Python
python3实现windows下同名进程监控
Jun 21 Python
Matplotlib中文乱码的3种解决方案
Nov 15 Python
django 中QuerySet特性功能详解
Jul 25 Python
使用Jupyter notebooks上传文件夹或大量数据到服务器
Apr 14 Python
利用python对mysql表做全局模糊搜索并分页实例
Jul 12 Python
Python通用唯一标识符uuid模块使用案例
Sep 10 Python
如何基于pandas读取csv后合并两个股票
Sep 25 Python
Python 的 f-string 可以连接字符串与数字的原因解析
Feb 20 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和MySQL保存和输出图片
2006/10/09 PHP
一个php作的文本留言本的例子(四)
2006/10/09 PHP
zf框架的db类select查询器join链表使用示例(zend框架)
2014/03/14 PHP
ThinkPHP之R方法实例详解
2014/06/20 PHP
php扩展开发入门demo示例
2019/09/23 PHP
PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析
2020/01/02 PHP
JavaScript 开发中规范性的一点感想
2009/06/23 Javascript
基于jQuery实现模拟页面加载进度条
2013/04/01 Javascript
防止浏览器记住用户名及密码的简单实用方法
2013/04/22 Javascript
JS将数字转换成三位逗号分隔的样式(示例代码)
2014/02/19 Javascript
jquery datatable后台封装数据示例代码
2014/08/07 Javascript
加载列表时jquery获取ul中第一个li的属性
2014/11/02 Javascript
jQuery formValidator表单验证
2016/01/07 Javascript
浅谈javascript的call()、apply()、bind()的用法
2016/02/21 Javascript
JS定时器用法分析【时钟与菜单中的应用】
2016/12/21 Javascript
微信小程序npm引入vant-weapp的踩坑记录
2019/08/01 Javascript
python实现模拟按键,自动翻页看u17漫画
2015/03/17 Python
python函数形参用法实例分析
2015/08/04 Python
Python 实现 贪吃蛇大作战 代码分享
2016/09/07 Python
python3中的md5加密实例
2018/05/29 Python
python实现批量修改服务器密码的方法
2019/08/13 Python
python多进程并行代码实例
2019/09/30 Python
keras-siamese用自己的数据集实现详解
2020/06/10 Python
python如何更新包
2020/06/11 Python
Django模板报TemplateDoesNotExist异常(亲测可行)
2020/12/18 Python
浅析HTML5中的download属性使用
2019/03/13 HTML / CSS
马来西亚领先的在线礼品店:Giftr
2018/08/23 全球购物
《识字五》教学反思
2014/03/01 职场文书
高考寄语大全
2014/04/08 职场文书
公路绿化方案
2014/05/12 职场文书
第二批党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
2014年英语教学工作总结
2014/12/17 职场文书
简历自荐信范文
2015/03/09 职场文书
转变工作作风心得体会
2016/01/23 职场文书
2016年小学教师师德承诺书
2016/03/25 职场文书
解决numpy数组互换两行及赋值的问题
2021/04/17 Python