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

如何使用LibreOffice Calc抓取网站数据?替代Google Sheets IMPORTXML

在LibreOffice Calc中替代Google Sheets IMPORTXML的解决方案

针对你从Google Sheets转用LibreOffice Calc抓取网页数据遇到的问题,我整理了几个可行的解决方案,帮你顺利获取产品名称和价格:

问题根源分析

你尝试的=FILTERXML(WEBSERVICE(E2);"//h3[@class='product-name']")返回#VALUE!,主要有两个核心原因:

  1. 你的LibreOffice 6.0.4.2版本比较老旧,FILTERXML对非标准XML(也就是绝大多数网页的HTML)兼容性很差——很多网页存在未闭合标签、属性引号不规范等问题,直接导致XML解析失败。
  2. 部分网站的反爬机制会拦截WEBSERVICE的默认请求,返回空白或无效内容,进而让公式报错。

具体解决方法

方法1:用REGEX替代FILTERXML(最可靠的快速方案)

如果目标网页的HTML结构比较稳定,直接用正则表达式提取内容会比依赖XML解析更靠谱,因为它不要求内容是严格的XML格式。

提取产品名称的公式:

=REGEX(WEBSERVICE(E2); "<h3 class=""product-name"">(.*?)</h3>"; "$1")

提取价格的公式:

=REGEX(WEBSERVICE(E2); "<span class=""price"">(.*?)</span>"; "$1")

注意:因为你的区域设置是德语,函数参数用分号分隔,公式里的双引号需要用两个连续双引号转义(这是LibreOffice公式的规则)。如果后续切换到英文区域,可以改用单引号包裹正则表达式,避免转义操作。

方法2:升级LibreOffice版本

你的6.0.4.2是2018年的旧版本,后续的7.x及以上版本对WEBSERVICE和FILTERXML做了大量优化,包括对非标准HTML的容错处理。升级后再尝试你原本的公式:

=FILTERXML(WEBSERVICE(E2); "//h3[@class='product-name']")

如果网页内容能被新版本正确解析,这个公式就能正常返回结果。

方法3:处理反爬拦截(进阶方案)

如果上述方法都失败,大概率是网站拦截了WEBSERVICE的默认请求。这时候需要用自定义请求头模拟浏览器访问,你可以通过LibreOffice宏实现:

  1. 打开LibreOffice Calc,按Alt+F11打开宏编辑器。
  2. 插入一个新模块,编写Basic代码发送带浏览器标识的请求(示例代码如下):
Function GetWebContent(url As String) As String
    Dim http As Object
    Set http = CreateObject("MSXML2.XMLHTTP")
    http.Open "GET", url, False
    http.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
    http.Send
    GetWebContent = http.responseText
End Function
  1. 然后在单元格中调用这个宏配合REGEX提取内容:
=REGEX(GetWebContent(E2); "<h3 class=""product-name"">(.*?)</h3>"; "$1")

测试验证

以你提供的示例URL http://www.killis.at/gin/monkey-47-gin-distiller-s-cut-2016-0-5-lt.html为例,用方法1的正则公式可以准确提取到产品名称和价格,只要网页结构不发生大的变化,就能稳定工作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:04:13