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

Google Sheets中利用XPath提取HTML首个UL列表文本的需求

搞定Google Sheets中提取UL下首个LI完整文本的问题

我明白你的痛点——600个结构一致但列表顺序不固定的页面,用IMPORTHTML的索引法完全不靠谱,之前只能抠出个“Galleon”,现在要拿到完整的“Galleon in Valley of the Four Winds.”字符串,用XPath精准定位就对了!

核心解决方案:用IMPORTXML+XPath+JOIN合并文本

因为目标LI里的文本可能分散在A标签内部和A标签之后的节点里,直接提取会拆成多个单元格,所以我们需要把这些文本节点合并起来。试试这个公式:

=TRIM(JOIN("", IMPORTXML(B2, "//ul[1]/li[1]/text() | //ul[1]/li[1]/a/text()")))

拆解一下这个公式的逻辑:

  • //ul[1]:精准定位页面里第一个出现的UL标签(不管它在DOM的哪个层级,避开其他干扰列表)
  • li[1]:取这个UL下的第一个LI元素,也就是你要的目标列表项
  • text() | //ul[1]/li[1]/a/text():同时提取LI下的所有普通文本节点,以及LI内部A标签里的文本节点(用|表示“或”)
  • JOIN("", ...):把所有提取到的零散文本拼接成一个完整字符串
  • TRIM():自动去掉拼接后可能出现的多余首尾空格

备选方案:用string()直接获取节点完整文本

如果Google Sheets支持XPath的string()函数(大部分版本都支持),你也可以用更简洁的写法:

=IMPORTXML(B2, "string(//ul[1]/li[1])")

这个XPath的string(//ul[1]/li[1])会直接把目标LI节点下的所有文本内容(包括子标签里的)合并成一个字符串返回,一步到位。

为什么这个方法比IMPORTHTML靠谱?

IMPORTHTML(B2,"list",3)是按页面中所有列表的顺序来索引的,但你说列表顺序不固定,索引值随时会变。而我们用的XPath是直接定位第一个UL下的第一个LI,完全不受其他列表位置的影响,600个页面可以批量套用,不用逐个调整索引。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:03:33