首页 > 代码库 > Python爬虫之xlml解析库

Python爬虫之xlml解析库

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="http://www.mamicode.com/link1.html">first item</a></li>
        <li class="item-1"><a href="http://www.mamicode.com/link2.html">second item</a></li>
        <li class="item-inactive"><a href="http://www.mamicode.com/link3.html">third item</a></li>
        <li class="item-1"><a href="http://www.mamicode.com/link4.html">fourth item</a></li>
        <li class="item-0"><a href="http://www.mamicode.com/link5.html">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="http://www.mamicode.com/link1.html"]) #获取li标签下href为link1的<a>标签
print html.xpath(//li//span) #获取li标签下所有的span标签
print html.xpath(//li[last()-1]/a)[0].text  #获取倒数第二个元素的内容

 

Python爬虫之xlml解析库