Python XPath 的错误处理

2023-04-17 00:00:00 python xpath 错误

Python 的 XPath 模块中提供了一些错误处理机制,用于捕获和处理 XPath 表达式中的错误。

使用 XPathParserError 类可以捕获语法错误,其定义如下:

class xpath.XPathParserError(msg, pos=None)

其中,msg 是错误消息字符串,pos 是错误位置,即错误发生的索引位置。

示例代码如下:

from lxml import etree
from lxml.etree import XPathParserError

html = """
<html>
  <body>
    <div class="content">
      <h1>pidancode.com</h1>
      <p>Welcome to the website of 皮蛋编程!</p>
    </div>
  </body>
</html>
"""

try:
    etree.fromstring(html).xpath('/html//div[class="content"]')
except XPathParserError as e:
    print(f"XPathParserError: {e}")

运行结果:

XPathParserError: Invalid predicate '['class'='content']' at line 1, column 14

可以看到,抛出了一个 XPathParserError 异常,错误消息为“Invalid predicate '['class'='content']' at line 1, column 14”,即在第 1 行第 14 列出现了无效的谓词。

另外,如果 XPath 表达式中匹配不到任何节点,将会抛出 XPathEvalError 异常。示例代码如下:

from lxml import etree
from lxml.etree import XPathEvalError

html = """
<html>
  <body>
    <div class="content">
      <h1>pidancode.com</h1>
      <p>Welcome to the website of 皮蛋编程!</p>
    </div>
  </body>
</html>
"""

try:
    etree.fromstring(html).xpath('/html//div[@class="not-exist"]')
except XPathEvalError as e:
    print(f"XPathEvalError: {e}")

运行结果:

XPathEvalError: Invalid expression

可以看到,抛出了一个 XPathEvalError 异常,错误消息为“Invalid expression”,即无效的表达式。

相关文章