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模糊查询本地文件夹去除文件后缀的实例(7行代码)
Nov 09 Python
python利用OpenCV2实现人脸检测
Apr 16 Python
python 使用poster模块进行http方式的文件传输到服务器的方法
Jan 15 Python
对python tkinter窗口弹出置顶的方法详解
Jun 14 Python
Python threading的使用方法解析
Aug 28 Python
关于Python核心框架tornado的异步协程的2种方法详解
Aug 28 Python
如何分离django中的媒体、静态文件和网页
Nov 12 Python
Jupyter Notebook打开任意文件夹操作
Apr 14 Python
Django Admin 上传文件到七牛云的示例代码
Jun 20 Python
Python中的With语句的使用及原理
Jul 29 Python
python 制作网站小说下载器
Feb 20 Python
Python Pytorch查询图像的特征从集合或数据库中查找图像
Apr 09 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压缩多个CSS为一个css的代码并缓存
2011/04/21 PHP
PHP关联链接常用代码
2012/11/05 PHP
joomla实现注册用户添加新字段的方法
2016/05/05 PHP
php批量删除操作代码分享
2017/02/26 PHP
AJAX使用了UpdatePanel后无法使用alert弹出脚本
2010/04/02 Javascript
jquery插件开发之实现jquery手风琴功能分享
2014/03/10 Javascript
js隐式全局变量造成的bug示例代码
2014/04/22 Javascript
js日期联动示例
2014/05/02 Javascript
javascript自动生成包含数字与字符的随机字符串
2015/02/09 Javascript
JavaScript实现自动弹出窗口并自动关闭窗口的方法
2015/08/06 Javascript
jQuery设置单选按钮radio选中/不可用的实例代码
2016/06/24 Javascript
nodejs中模块定义实例详解
2017/03/18 NodeJs
深究AngularJS中$sce的使用
2017/06/12 Javascript
Angular使用过滤器uppercase/lowercase实现字母大小写转换功能示例
2018/03/27 Javascript
微信小程序实现选项卡效果
2018/11/06 Javascript
layui点击数据表格添加或删除一行的例子
2019/09/12 Javascript
[40:50]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第四场
2014/05/24 DOTA
[15:23]教你分分钟做大人:虚空假面
2014/10/30 DOTA
[01:10:03]OG vs EG 2018国际邀请赛淘汰赛BO3 第三场 8.23
2018/08/24 DOTA
python关于矩阵重复赋值覆盖问题的解决方法
2019/07/19 Python
Python常用数据类型之间的转换总结
2019/09/06 Python
Python函数的定义方式与函数参数问题实例分析
2019/12/26 Python
flask框架渲染Jinja模板与传入模板变量操作详解
2020/01/25 Python
TensorFlow实现checkpoint文件转换为pb文件
2020/02/10 Python
CSS3 制作绽放的莲花采用效果叠加实现
2013/01/31 HTML / CSS
CSS3利用text-shadow属性实现多种效果的文字样式展现方法
2016/08/25 HTML / CSS
Expedia印度:您的一站式在线旅游网站
2017/08/24 全球购物
美国奢侈品在线团购网站:Gilt City
2017/11/16 全球购物
一百多行代码实现react拖拽hooks
2021/03/23 Javascript
餐饮加盟计划书
2014/01/10 职场文书
房屋买卖委托公证书
2014/04/08 职场文书
C++程序员求职信范文
2014/04/14 职场文书
职业道德模范事迹材料
2014/08/24 职场文书
针对吵架老公保证书
2015/05/08 职场文书
基层组织建设年活动总结
2015/05/09 职场文书
生日宴会家属答谢词
2015/09/29 职场文书