1、lxml简介
lxml 是一种使用 Python 编写的库,可以迅速、灵活地处理 XML 和 HTML。
它支持 XML Path Language (XPath) 和 Extensible Stylesheet Language Transformation (XSLT),并且实现了常见的 ElementTree API,而且解析效率非常高。
lxml XML 工具包是 C 库 libxml2和libxslt的 Pythonic 绑定。它的独特之处在于它将这些库的速度和 XML 功能完整性与原生 Python API 的简单性结合在一起,大部分兼容但优于众所周知的 ElementTree API。
相关文档:
https://bugs.launchpad.net/lxml
2、lxml的安装
1)Windows上安装
pip3 install lxml
2)Linux上安装
yum install -y epel-release libxslt-devel libxml2-devel openssl-devel pip3 install lxml
3、获取元素标签的方法
1)使用xpath选择器的语法
对于 ElementTree,xpath 方法对文档(如果是绝对的)或根节点(如果是相对的)执行全局 XPath 查询。
参考文档:Python通过Lxml库解析网络爬虫抓取到的html
2)使用CSS选择器的语法
lxml中需要使用CSS选择器语法,需要安装cssselect
。
安装cssselect:
pip install cssselect
使用示例:
import lxml.html as lh
content='''\
<div class="ds-list">
<b>1. </b>
C JAVA Python
<i>Python</i>
https://www.cjavapy.com
</div>'''
doc=lh.fromstring(content)
for div in doc.cssselect('div.ds-list'):
print(div.text_content())
从文件中解析:
import lxml
root = lxml.html.parse(filename).getroot()
# 以防文件包含unicode字符
parser = lxml.html.HTMLParser(encoding='utf-8')
root = lxml.html.parse(filename, parser=parser).getroot()
# 使用CSS选择器获取匹配的元素
els = root.cssselect('div.shop-info div.info-name h2 a')
el_text = els[0].text
print(el_text)
el_href = els[0].attrib['href']
print(el_href)