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中使用PyHook监听鼠标和键盘事件实例
Jul 18 Python
详解python如何调用C/C++底层库与互相传值
Aug 10 Python
python爬虫爬取某站上海租房图片
Feb 04 Python
python实现随机漫步算法
Aug 27 Python
详解django中使用定时任务的方法
Sep 27 Python
python生成器与迭代器详解
Jan 01 Python
Python实现最大子序和的方法示例
Jul 05 Python
pandas数据处理进阶详解
Oct 11 Python
python基于opencv检测程序运行效率
Dec 28 Python
浅谈如何使用python抓取网页中的动态数据实现
Aug 17 Python
pytorch加载语音类自定义数据集的方法教程
Nov 10 Python
教你怎么用python实现字符串转日期
May 24 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 常用类汇总 推荐收藏
2010/05/13 PHP
php header Content-Type类型小结
2011/07/03 PHP
PHP中empty和isset对于参数结构的判断及empty()和isset()的区别
2015/11/15 PHP
php实现购物车功能(下)
2016/01/05 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
2020/03/27 PHP
js类中获取外部函数名的方法与代码
2007/09/12 Javascript
javascript实现文字图片上下滚动的具体实例
2013/06/28 Javascript
判断文档离浏览器顶部的距离的方法
2014/01/08 Javascript
JavaScript如何实现在文本框(密码框)输入提示语
2015/12/25 Javascript
动态加载js文件简单示例
2016/04/21 Javascript
基于Bootstrap+jQuery.validate实现表单验证
2016/05/30 Javascript
简单谈谈ES6的六个小特性
2016/11/18 Javascript
js获取json中key所对应的value值的简单方法
2020/06/17 Javascript
Node.js对MongoDB数据库实现模糊查询的方法
2017/05/03 Javascript
使用react-router4.0实现重定向和404功能的方法
2017/08/28 Javascript
AngularJS实现动态切换样式的方法分析
2018/06/26 Javascript
通过vue手动封装on、emit、off的代码详解
2019/05/29 Javascript
微信小程序实现张图片合成为一张并下载
2019/07/16 Javascript
vue 实现click同时传入事件对象和自定义参数
2021/01/29 Vue.js
[02:48]DOTA2英雄基础教程 拉席克
2013/12/12 DOTA
深入解读Python解析XML的几种方式
2016/02/16 Python
Django 如何获取前端发送的头文件详解(推荐)
2017/08/15 Python
浅析python3中的os.path.dirname(__file__)的使用
2018/08/30 Python
Python使用pyshp库读取shapefile信息的方法
2018/12/29 Python
pytorch ImageFolder的覆写实例
2020/02/20 Python
python 如何设置守护进程
2020/10/29 Python
CSS3 Flex 弹性布局实例代码详解
2018/11/01 HTML / CSS
大学生专科毕业生自我评价
2013/11/17 职场文书
校园门卫岗位职责
2013/12/09 职场文书
调解员先进事迹材料
2014/02/07 职场文书
公司门卫的岗位职责
2014/02/19 职场文书
决心书范文
2014/03/11 职场文书
聘任书的写作格式及范文
2014/03/29 职场文书
齐云山导游词
2015/02/06 职场文书
V Rising 服务器搭建图文教程
2022/06/16 Servers
MySQL生成千万测试数据以及遇到的问题
2022/08/05 MySQL