You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用XPath提取HTML中Label标签对应的"East to West"内容?

解决XPath提取Label对应内容的问题

我来帮你搞定这个问题!先看看你的HTML结构:

<div class="product-details"> 
  <dl> 
    <dt>Label:</dt> 
    <dd> East to West <br> </br> </dd> 
    <dt>Subtitles:</dt> 
    <dd> ---- <br> </br> </dd> 
  </dl> 
</div>

你之前的XPath response.xpath('//dl[dt = "Label:"]/following-sibling::text()').extract_first() 返回空白,是因为它找的是dl元素的后续兄弟文本节点,而你的目标内容其实在dt的同级dd标签里,完全找错位置啦!

这里给你几个正确的写法:

方法1:定位到Label对应的dd节点,提取并清理文本

直接找到文本为"Label:"的dt,然后取它后面第一个dd的文本,再用normalize-space()去除多余的换行、空格和制表符:

response.xpath('normalize-space(//dt[text()="Label:"]/following-sibling::dd[1]/text())').extract_first()

这样就能得到干净的East to West了。

方法2:通过dl容器定位dd

也可以先找到包含"Label:"的dl,再取里面的dd文本,同样配合清理:

response.xpath('normalize-space(//dl[dt/text()="Label:"]/dd/text())').extract_first()

为什么要加normalize-space?

因为你的dd里的文本包含换行、空格(比如<dd> East to West <br>里的前后空格),normalize-space()会自动把这些多余的空白字符去掉,只保留单词之间的单个空格,正好符合你的需求。

如果不想用XPath的normalize-space,也可以在提取后用Python的字符串方法清理,比如:

text = response.xpath('//dt[text()="Label:"]/following-sibling::dd[1]/text()').extract_first()
clean_text = text.strip() if text else None

这样也能得到同样的结果~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:02:44