这里有新鲜出炉的 Python 教程,程序狗速度看过来!
Python 是一种面向对象、解释型计算机程序设计语言,由 Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 1991 年。Python 语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够把用其他语言制作的各种模块(尤其是 C/C++)很轻松地联结在一起。
下面小编就为大家带来一篇 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="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 解析库 (全面了解) 就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持 PHPERZ。
来源: http://www.phperz.com/article/17/0823/344559.html