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多线程实例教程
Sep 06 Python
Python中使用strip()方法删除字符串中空格的教程
May 20 Python
pytorch构建网络模型的4种方法
Apr 13 Python
不管你的Python报什么错,用这个模块就能正常运行
Sep 14 Python
面向初学者的Python编辑器Mu
Oct 08 Python
Python 给某个文件名添加时间戳的方法
Oct 16 Python
浅谈python中str字符串和unicode对象字符串的拼接问题
Dec 04 Python
Python Pillow Image Invert
Jan 22 Python
Python后台开发Django会话控制的实现
Apr 15 Python
python_mask_array的用法
Feb 18 Python
python geopandas读取、创建shapefile文件的方法
Jun 29 Python
Python实现简单得递归下降Parser
May 02 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递归获取目录内文件(包含子目录)封装类分享
2013/12/25 PHP
php数组合并与拆分实例分析
2015/06/12 PHP
WordPres对前端页面调试时的两个PHP函数使用小技巧
2015/12/22 PHP
PHP实现批量上传单个文件
2015/12/29 PHP
PHP 常用时间函数资料整理
2016/10/22 PHP
PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
2017/09/17 PHP
PHP上传文件及图片到七牛的方法
2018/07/25 PHP
php-fpm.conf配置文件中文说明详解及重要参数说明
2018/10/10 PHP
Thinkphp5 自定义上传文件名的实现方法
2019/07/23 PHP
tp5 实现列表数据根据状态排序
2019/10/18 PHP
nicejforms——美化表单不用愁
2007/02/20 Javascript
JavaScript监测ActiveX控件是否已经安装过的代码
2008/09/02 Javascript
javascript 类型判断代码分析
2010/03/28 Javascript
javascript实现禁止复制网页内容
2014/12/16 Javascript
利用Angular.js限制textarea输入的字数
2016/10/20 Javascript
vue中渐进过渡效果实现
2016/10/27 Javascript
vue2的todolist入门小项目的详细解析
2017/05/11 Javascript
JS点击缩略图整屏居中放大图片效果
2017/07/04 Javascript
关于Mac下安装nodejs、npm和cnpm的教程
2018/04/11 NodeJs
element-ui 设置菜单栏展开的方法
2018/08/22 Javascript
vue实现压缩图片预览并上传功能(promise封装)
2019/01/10 Javascript
vue实现中部导航栏布局功能
2019/07/30 Javascript
layui 数据表格 根据值(1=业务,2=机构)显示中文名称示例
2019/10/26 Javascript
javascript的delete运算符知识点总结
2019/11/19 Javascript
js 动态校验开始结束时间的实现代码
2020/05/25 Javascript
js里面的变量范围分享
2020/07/18 Javascript
[03:01]完美盛典趣味短片 DOTA2年度最佳&拉胯英雄
2019/12/07 DOTA
纯Python开发的nosql数据库CodernityDB介绍和使用实例
2014/10/23 Python
Python的Flask框架中配置多个子域名的方法讲解
2016/06/07 Python
Python面向对象类继承和组合实例分析
2018/05/28 Python
Python 创建守护进程的示例
2020/09/29 Python
简历中个人求职的自我评价模板
2013/11/29 职场文书
2014年党员个人剖析材料
2014/10/08 职场文书
国庆节标语大全
2014/10/08 职场文书
如何理解Vue前后端数据交互与显示
2021/05/10 Vue.js
vue使用wavesurfer.js解决音频可视化播放问题
2022/04/04 Vue.js