未加星标

Python爬虫之xlml解析库(全面了解)

字体大小 | |
[开发(python) 所属分类 开发(python) | 发布者 店小二03 | 时间 | 作者 红领巾 ] 0人收藏点击收藏

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()<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)相关术语:python基础教程 python多线程 web开发工程师 软件开发工程师 软件开发流程

主题: XMLHTMLPython
分页:12
转载请注明
本文标题:Python爬虫之xlml解析库(全面了解)
本站链接:http://www.codesec.net/view/560995.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 开发(python) | 评论(0) | 阅读(47)