Python从0到100:xpath和lxml类库
在Python中,lxml
是一个非常强大的库,它提供了对XML和HTML的处理功能。lxml
使用了和正则表达式相似的xpath语法来查询XML/HTML文档。
XPath是一门在XML文档中查找信息的语言,它可以用来在XML文档中对元素和属性进行遍历。
以下是一些使用XPath和lxml库的例子:
- 安装lxml库
pip install lxml
- 使用lxml解析HTML
from lxml import etree
html = """
<html>
<head>
<title>Example page</title>
</head>
<body>
<p>This is a <b>paragraph</b>.</p>
</body>
</html>
"""
# 解析HTML
tree = etree.HTML(html)
# 使用XPath查询
result = tree.xpath('//title/text()')
print(result) # ['Example page']
- 使用lxml解析XML
from lxml import etree
xml = """
<root>
<element attribute="value">text</element>
</root>
"""
# 解析XML
tree = etree.XML(xml)
# 使用XPath查询
result = tree.xpath('//element/@attribute')
print(result) # ['value']
- 使用lxml解析XML文件
from lxml import etree
# 解析XML文件
tree = etree.parse('example.xml')
# 使用XPath查询
result = tree.xpath('//element/text()')
print(result) # 返回所有element元素的文本内容
- 使用lxml进行命名空间处理
from lxml import etree
xml = """
<root xmlns:a="http://example.com/a">
<a:element>text</a:element>
</root>
"""
# 解析XML并定义命名空间
parser = etree.XMLParser(ns_clean=True)
tree = etree.parse(xml, parser)
# 使用XPath查询
result = tree.xpath('//a:element/text()', namespaces={'a': 'http://example.com/a'})
print(result) # ['text']
- 使用lxml进行XML校验
from lxml import etree
schema_text = """
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="root">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="element" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
"""
schema = etree.XMLSchema(etree.XML(schema_text))
xml_text = """
<root>
<element>text</element>
</root>
"""
doc = etree.XML(xml_text)
schema.assertValid(doc)
print("XML is valid!")
以上例子展示了如何使用lxml库进行XML和HTML的解析,以及如何使用XPath进行查询。lxml是一个非常强大的库,可以用于各种与XML/HTML相关的任务,包括解析、校验、转换等。
评论已关闭