Python XPath 运算符与逻辑运算符的比较
XPath 运算符和逻辑运算符是用来执行不同操作的。
XPath 运算符包括 算术运算符、比较运算符、布尔运算符、节点测试运算符等,用于对节点和数值进行操作和计算。例如,下面的示例将导航到具有 @href 属性的所有链接标记:
//a[@href]
这个表达式使用了“[@href]”运算符,表示仅选取带有 @href 属性的链接标记。
另一方面,逻辑运算符用于连接多个表达式或操作,并对它们进行比较或分析。最常用的逻辑运算符是 AND 和 OR。例如,下面的示例将选取所有文本节点,其中文本包含字符串“pidancode.com”或“皮蛋编程”:
//text()[contains(., 'pidancode.com') or contains(., '皮蛋编程')]
这个表达式使用 OR 运算符,表示仅选取两者中的任何一个符合条件的文本节点。
在 Python 中,可以使用 lxml 库来解析和处理 XML 文档。以下是一个演示如何使用 XPath 运算符和逻辑运算符的 Python 代码示例:
from lxml import etree # 将 XML 文档加载到内存中并解析 xml = ''' <root> <link href="https://www.pidancode.com/">pidancode.com</link> <link href="https://www.baidu.com/">百度</link> <link href="https://www.pandanote.info/">pandanote.info</link> </root> ''' root = etree.fromstring(xml) # 使用 XPath 运算符选取具有 @href 属性的链接标记 links = root.xpath('//link[@href]') for link in links: print(link.text) # 使用逻辑运算符选取具有特定文本的文本节点 text_nodes = root.xpath('//text()[contains(., "pidancode.com") or contains(., "皮蛋编程")]') for node in text_nodes: print(node)
输出:
pidancode.com <p>pidancode.com</p>
相关文章