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 学习笔记
Dec 27 Python
python 不关闭控制台的实现方法
Oct 23 Python
Python urllib、urllib2、httplib抓取网页代码实例
May 09 Python
python魔法方法-自定义序列详解
Jul 21 Python
python 链接和操作 memcache方法
Mar 04 Python
Python装饰器实现几类验证功能做法实例
May 18 Python
python实现批量修改文件名代码
Sep 10 Python
python3.6 如何将list存入txt后再读出list的方法
Jul 02 Python
python实现简易学生信息管理系统
Apr 05 Python
pyqt5中动画的使用详解
Apr 01 Python
Python基于time模块表示时间常用方法
Jun 18 Python
Python接口自动化测试框架运行原理及流程
Nov 30 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
全国FM电台频率大全 - 14 江西省
2020/03/11 无线电
我整理的PHP 7.0主要新特性
2016/01/07 PHP
flash javascript之间的通讯方法小结
2008/12/20 Javascript
JavaScript URL参数读取改进版
2009/01/16 Javascript
IE8 兼容性问题(属性名区分大小写)
2009/06/04 Javascript
JavaScript Cookie的读取和写入函数
2009/12/08 Javascript
JS链式调用的实现方法
2013/03/07 Javascript
jquery网页元素拖拽插件效果及实现
2013/08/05 Javascript
FullCalendar日历插件应用之数据展现(一)
2015/12/23 Javascript
解决拦截器对ajax请求的拦截实例详解
2016/12/21 Javascript
webpack构建vue项目的详细教程(配置篇)
2017/07/17 Javascript
Vuex的actions属性的具体使用
2019/04/14 Javascript
解决Layui中templet中a的onclick参数传递的问题
2019/09/20 Javascript
Vue 中 a标签上href无法跳转的解决方式
2019/11/12 Javascript
vue中使用vue-print.js实现多页打印
2020/03/05 Javascript
解决antd 下拉框 input [defaultValue] 的值的问题
2020/10/31 Javascript
[01:32]DOTA2次级联赛——首支职业女子战队选拔赛全记录
2014/10/23 DOTA
简单介绍Python2.x版本中的cmp()方法的使用
2015/05/20 Python
python中os和sys模块的区别与常用方法总结
2017/11/14 Python
Python Django框架防御CSRF攻击的方法分析
2019/10/18 Python
Python谱减法语音降噪实例
2019/12/18 Python
python中rb含义理解
2020/06/18 Python
python 实现汉诺塔游戏
2020/11/28 Python
python中remove函数的踩坑记录
2021/01/04 Python
Pytorch自定义Dataset和DataLoader去除不存在和空数据的操作
2021/03/03 Python
HTML5未来发展趋势
2016/02/01 HTML / CSS
Linux如何命名文件--使用文件名时应注意
2014/05/29 面试题
十一个高级MySql面试题
2014/10/06 面试题
小学生作文评语
2014/04/18 职场文书
公司领导班子对照检查存在问题整改措施
2014/10/02 职场文书
美术教师个人工作总结
2015/02/06 职场文书
2015年六一儿童节演讲稿
2015/03/19 职场文书
出纳2015年度工作总结范文
2015/10/14 职场文书
CSS3实现模糊背景的三种效果示例
2021/03/30 HTML / CSS
Win11怎么进入安全模式?Windows 11进入安全模式的方法
2021/11/21 数码科技
Python如何用re模块实现简易tokenizer
2022/05/02 Python