You need to enable JavaScript to run this app. lxml.etree.HTML中子元素xpath查询返回整页内容问题求解
优惠活动
大模型
产品
解决方案
定价
更多

lxml.etree.HTML中子元素xpath查询返回整页内容问题求解

lxml 子节点xpath返回全文档匹配结果问题解决

问题原因

XPath语法规则中,以//开头的查询表达式默认的查询范围是整个文档的根节点,和你调用xpath方法的所属节点无关。因此你在l2(单个卡片元素)上执行//开头的xpath时,不会限定在l2的内部范围查询,而是直接返回整个页面的所有匹配结果,这是语法规则导致的正常现象,不是lxml的异常。

解决方法

只需要在xpath表达式开头添加.,代表查询范围限定为当前节点的内部,将原有的//替换为.//即可。

修改后的代码如下:

from lxml.etree import HTML
from requests import Session

z = Session()
z.params = {"filter[entry_type]": "business"}
x = z.get("https://www.local.ch/it/q", params={"where": 'Chiasso'}).text
x = HTML(x)
l1 = x.xpath("//*[starts-with(@class, 'js-entry-card-container')]")
for l2 in l1:
   # 开头加. 限定在l2内部查询
   l3 = l2.xpath(".//*[starts-with(@class, 'lui-margin-vertical-zero')]")

内容的提问来源于stack exchange,提问作者Marco Ocram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 13:36:01