Python爬虫之xlml解析库(全面了解)
2017-08-08 08:39
627 查看
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()<3] | 选取最前面的两个属于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 网络爬虫 002 (入门) 爬取一个网站之前,要了解的知识
- [Python]网络爬虫(九):百度贴吧的网络爬虫(v0.4)源码及解析
- [Python]网络爬虫:糗事百科的网络爬虫(v0.2)源码及解析
- [Python]网络爬虫(八):糗事百科的网络爬虫(v0.3)源码及解析(简化更新)
- Python爬虫:学爬虫前得了解的事儿
- Python 爬虫(以赛马数据为例)之使用BeautifulSoup进行Html解析
- Python爬虫从入门到放弃(十一)之 Scrapy框架整体的一个了解
- 【python爬虫专题】解析方法 <2> Requests库方法总结
- python爬虫 (一) 爬虫基础了解,urllib
- [Python]网络爬虫(八):糗事百科的网络爬虫(v0.2)源码及解析
- python爬虫入门教程--HTML文本的解析库BeautifulSoup(四)
- [Python]网络爬虫:百度贴吧的网络爬虫(v0.4)源码及解析
- Python写爬虫——抓取网页并解析HTML
- (转载)Python写爬虫--抓取网页并解析HTML
- 【Python爬虫】了解网站信息
- python爬虫 第1天 复杂的HTML解析 45页
- python中的break、continue、exit()、pass全面解析
- 全面了解Python的getattr(),setattr(),delattr(),hasattr()
- [Python]网络爬虫(八):糗事百科的网络爬虫(v0.3)源码及解析(简化更新)
- Python使用Mechanize模块编写爬虫的要点解析