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

无法生成精准XPath,需提取页面Title与Genre对应内容

精准提取Title和Genre的XPath方案

嘿,我来帮你搞定这个元素定位的问题!先看看你提供的HTML结构:

  • Title:Army Of Darkness
  • Genre:
  • Horror

这里有个小坑:Genre对应的文本Horror并没有放在<li>标签里,而是作为<ul>的直接文本节点,跟在第二个<li>后面。下面给你一套精准又健壮的XPath方案:

1. 提取Title的最优XPath

你之前的思路是对的,但可以优化得更健壮——不要依赖<li>的位置(比如li[1]),而是通过<b>标签的文本内容来定位对应的<li>:

//div[@class='mdif']/ul/li[b[text()='Title:']]/text()

这样就算HTML里<li>的顺序发生变化,只要<b>Title:</b>这个标识在,就能准确拿到Army Of Darkness。

2. 提取Genre的XPath

因为Horror是<ul>的直接文本节点,我们需要定位到<b>Genre:</b>所在的<li>,然后获取它后面的非空白文本节点:

//div[@class='mdif']/ul/li[b[text()='Genre:']]/following-sibling::text()[normalize-space()]
  • following-sibling::text():获取当前<li>后面的所有文本节点
  • normalize-space():过滤掉那些只有空白字符的无效文本节点

3. 组合结果

如果用Python的lxml库,你可以这样写代码来得到期望的结果:

title = root.xpath("//div[@class='mdif']/ul/li[b[text()='Title:']]/text()")[0]
genre = root.xpath("//div[@class='mdif']/ul/li[b[text()='Genre:']]/following-sibling::text()[normalize-space()]")[0].strip()
result = f"{title} {genre}"
# 输出:Army Of Darkness Horror

这种方案既精准又具备适应性,不用担心HTML结构小幅度调整导致提取失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:04:35