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)