赞
踩
lxml
lxml库¶
1,lxml库是一个HTML/XML的解析器,主要功能是如何解析和提取HTML/XML数据
2,lxml和正则一样,都是通过C语言实现的,它是一款高性能的Python HTML/XML的解析器,我们可以利用之前所学习的XPath语法,来快速定位特定元素以及节点信息
3,lxml python 的官方文档:http://lxml.de/index.html
4,需要安装语言库,pip install lxml
使用流程:
from lxml import etree
parse_html = etree.HTML(html)
xpath:r_list = parse_html.xpath('xpath语法')
xpath
语法在XPath
中,HXML文档是被作为节点树来对待的。树的根被称为文档节点或者根节点。
表达式 | 描述 |
---|---|
// | 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。 |
/ | 如果是在最前面,表示从根节点选取。否则某节点下的某个节点 |
@ | 选取某个节点的属性 |
text() | 选取文本。 |
谓语:谓语用来查找某个特定的节点或者包含某个指定的值的节点,被嵌在方括号中。
表达式 | 描述 |
---|---|
/bookstore/book[1] | 选取属于 bookstore 子元素的第一个 book 元素。 |
/bookstore/book[last()] | 选取属于 bookstore 子元素的最后一个 book 元素。 |
//title[@lang] | 选取所有拥有名为 lang 的属性的 title 元素。 |
<li>
标签# 例子 html = ''' <div> <ul> <li class="item-0"><a href="link1.html">first item</a></li> <li class="item-1"><a href="link2.html">second item</a></li> <li class="item-inactive"><a href="link3.html">third item</a></li> <li class="item-1"><a href="link4.html">fourth item</a></li> <li class="item-0"><a href="link5.html">fifth item</a></li> </ul> </div> ''' from lxml import etree xml_doc = etree.HTML(html) # xml result = xml_doc.xpath('//li') print(result) # print(type(result)) for i in result: print(i) r = etree.tostring(i) print(r)
<li>
标签的所有 class
属性re = xml_doc.xpath('//li/@class')
print(re)
结果:[‘item-0’, ‘item-1’, ‘item-inactive’, ‘item-1’, ‘item-0’]
<li>
标签下的<a>
标签里的所有 hrefr = xml_doc.xpath('//a/@href')
# r = xml_doc.xpath('//div')
print(r)
结果:[‘link1.html’, ‘link2.html’, ‘link3.html’, ‘link4.html’, ‘link5.html’]
<li>
标签下href
为 link1.html
的 <a>
标签 的文本内容r=xml_doc.xpath('//a[@href="link1.html"]/text()')
print(r)
# print(etree.tostring(r[0]))
结果:[‘first item’]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。