如何从Ozon网页导入无折扣价格到Google Sheets,IMPORTXML不生效怎么办
失败原因说明
你使用IMPORTXML抓取失败有两个核心原因:
- Ozon的商品价格为JavaScript动态渲染内容,你定位的
_2DV4 _17o0 _1v1b节点不存在于页面静态源码中,IMPORTXML仅能读取静态HTML内容,无法识别JS渲染生成的元素 - Ozon配置了反爬机制,默认会拦截Google Sheets官方爬虫的请求
可行解决方案:使用自定义Google Apps Script函数
你可以通过自定义函数模拟普通浏览器请求,抓取页面内嵌的原始数据提取价格,操作步骤如下:
- 打开目标Google Sheets,点击顶部菜单栏「扩展程序」->「Apps脚本」进入脚本编辑器
- 清空编辑器内默认的示例代码,粘贴如下代码:
function GET_OZON_PRICE(url) { const options = { // 模拟普通Chrome浏览器的请求头,绕过基础反爬 headers: { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36' }, muteHttpExceptions: true }; const pageContent = UrlFetchApp.fetch(url, options).getContentText(); // 匹配页面内嵌的无折扣价格字段 const priceResult = pageContent.match(/"priceWithoutDiscount":"(\d+)"/); return priceResult ? Number(priceResult[1]) : "未匹配到价格"; }
- 点击编辑器顶部的保存按钮,给项目自定义一个名称(例如Ozon价格抓取工具),按照提示完成脚本授权(出现未验证提示时点击「高级」->「继续访问」即可,代码为你本人可控,无安全风险)
- 回到表格页面,在需要输出价格的单元格输入公式
=GET_OZON_PRICE(B2)即可获取对应链接的无折扣价格
注意事项
- 若后续Ozon调整页面数据结构导致抓取失效,你可以打开对应商品页面按F12查看页面源码,修改代码中正则的匹配字段即可
- 不要短时间内批量触发大量抓取请求,否则容易触发Ozon的反爬限制,被限制后可间隔数小时再尝试,或者替换代码中User-Agent的参数值
内容的提问来源于stack exchange,提问作者Dima Melnik
相关产品推荐
相关产品推荐

