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操作MySQL数据库的方法分享
May 29 Python
如何运行Python程序的方法
Apr 21 Python
Python装饰器decorator用法实例
Nov 10 Python
Python中计算三角函数之cos()方法的使用简介
May 15 Python
python实现在图片上画特定大小角度矩形框
Oct 24 Python
Python pycharm 同时加载多个项目的方法
Jan 17 Python
如何使用Python 打印各种三角形
Jun 28 Python
用python给自己做一款小说阅读器过程详解
Jul 11 Python
numpy:找到指定元素的索引示例
Nov 26 Python
在PyCharm中遇到pip安装 失败问题及解决方案(pip失效时的解决方案)
Mar 10 Python
Python生成器传参数及返回值原理解析
Jul 22 Python
Python Parser的用法
May 12 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 获取SWF动画截图示例代码
2014/02/10 PHP
Chrome Web App开发小结
2014/09/04 PHP
php保存任意网络图片到服务器的方法
2015/04/14 PHP
PHP基于方差和标准差计算学生成绩的稳定性示例
2017/07/04 PHP
postman的安装与使用方法(模拟Get和Post请求)
2018/08/06 PHP
jquery弹出框的用法示例(一)
2013/08/26 Javascript
jquery实现加载等待效果示例
2013/09/25 Javascript
JS中Date日期函数中的参数使用介绍
2014/01/02 Javascript
jquery获取tagName再进行判断
2014/05/29 Javascript
简单的jquery左侧导航栏和页面选中效果
2014/08/21 Javascript
JavaScript onkeypress事件入门实例(按下或按住一个键盘按键)
2014/10/17 Javascript
每天一篇javascript学习小结(面向对象编程)
2015/11/20 Javascript
浅析JS动态创建元素【两种方法】
2016/04/20 Javascript
canvas实现环形进度条效果
2017/03/23 Javascript
[00:43]FTP典藏礼包 DOTA2三大英雄霸气新套装
2014/03/21 DOTA
[01:18:21]EG vs TNC Supermajor小组赛B组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
使用python编写批量卸载手机中安装的android应用脚本
2014/07/21 Python
使用Python中的greenlet包实现并发编程的入门教程
2015/04/16 Python
Python MD5加密实例详解
2017/08/02 Python
Python安装Flask环境及简单应用示例
2019/05/03 Python
Python closure闭包解释及其注意点详解
2019/08/28 Python
浅析python中while循环和for循环
2019/11/19 Python
Python作用域与名字空间原理详解
2020/03/21 Python
如何把外网python虚拟环境迁移到内网
2020/05/18 Python
使用TensorBoard进行超参数优化的实现
2020/07/06 Python
python实现图片,视频人脸识别(opencv版)
2020/11/18 Python
python实现企业微信定时发送文本消息的示例代码
2020/11/24 Python
方正Java笔试题
2014/07/03 面试题
心理健康教育心得体会
2013/12/29 职场文书
食堂个人先进事迹
2014/01/22 职场文书
班主任评语大全
2014/04/26 职场文书
关于空气污染危害的感想
2015/08/11 职场文书
2016暑期社会实践心得体会范文
2016/01/14 职场文书
《中彩那天》教学反思
2016/02/24 职场文书
Golang 语言控制并发 Goroutine的方法
2021/06/30 Golang
实战Python爬虫爬取酷我音乐
2022/04/11 Python