如何 重写 etree.HTML 里的xpath 方法
时间: 2024-03-01 15:55:26 浏览: 60
要重写 `etree.HTML` 里的 `xpath` 方法,可以继承 `etree.HTML` 类,然后重写 `xpath` 方法。下面是一个简单的示例:
```python
from lxml import etree
class MyHTMLParser(etree.HTML):
def xpath(self, xpath_expr, namespaces=None, **kwargs):
# 自定义 xpath 方法
# ...
return super().xpath(xpath_expr, namespaces=namespaces, **kwargs)
# 使用自定义的 HTML 解析器
parser = MyHTMLParser()
# 解析 HTML 并获取元素
html = """
<html>
<body>
<div class="container">
<h1>标题</h1>
<p>正文</p>
</div>
</body>
</html>
"""
root = parser(html)
title = root.xpath('//h1')[0]
print(title.text) # 输出:标题
```
在上面的示例中,我们定义了一个名为 `MyHTMLParser` 的类,继承自 `etree.HTML` 类,并重写了 `xpath` 方法。在自定义的 `xpath` 方法中,我们可以添加自己的逻辑,然后调用父类的 `xpath` 方法来执行原始的 `xpath` 操作。最后,我们使用自定义的 HTML 解析器来解析 HTML 并获取元素。
阅读全文