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”,即无效的表达式。
相关文章