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

如何在Google Script中通过Id/Class获取元素?解决相关报错问题

解决UrlFetchApp获取HTML后无法调用getElementById的问题

问题原因

response.getContentText()返回的是纯字符串格式的HTML代码,而getElementById()是浏览器DOM元素的专属方法,普通字符串不具备这个方法,因此会触发TypeError: html.getElementById is not a function。

解决方案

方法1:正则表达式直接提取EAN(高效适配目标需求)

你的核心需求是提取13位的EAN编号,直接用正则匹配HTML字符串中的13位数字即可,无需解析整个DOM:

function scrapeWebsite() {
  var url = 'https://www.bol.com/nl/nl/p/azul-tuin-van-de-koningin-bordspel/9300000094065315/?promo=main_860_product_4&bltgh=kj5mIYO78dnIY1vUCvxPbg.18_19.24.ProductTitle';
  var response = UrlFetchApp.fetch(url);
  var html = response.getContentText();
  
  // 匹配13位数字格式的EAN
  var eanRegex = /\b\d{13}\b/g;
  var matches = html.match(eanRegex);
  
  if (matches) {
    // 去重避免页面重复出现的EAN
    var uniqueEans = [...new Set(matches)];
    Logger.log('提取到的EAN:' + uniqueEans.join(', '));
    // 如需写入Google Sheet,取消以下注释
    // var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    // uniqueEans.forEach(ean => sheet.appendRow([ean]));
  } else {
    Logger.log('未找到EAN编号');
  }
}

方法2:用Cheerio库解析DOM(精准定位元素)

如果需要通过元素选择器精准提取内容,可以使用Cheerio库(Google Apps Script支持添加第三方库):

  1. 打开脚本编辑器,点击「资源」→「库」
  2. 输入库ID:1ReeQ6WO8kKNxoaA_O0XEQ589cIrRvEBA9qcWpNqdOP17i47u6N9M5Xh0,选择最新版本后添加
  3. 使用以下代码:
function scrapeWithCheerio() {
  var url = 'https://www.bol.com/nl/nl/p/azul-tuin-van-de-koningin-bordspel/9300000094065315/?promo=main_860_product_4&bltgh=kj5mIYO78dnIY1vUCvxPbg.18_19.24.ProductTitle';
  var response = UrlFetchApp.fetch(url);
  var html = response.getContentText();
  
  // 加载HTML到Cheerio
  var $ = Cheerio.load(html);
  
  // 替换为目标元素的选择器,比如页面中存储EAN的元素ID或类名
  var eanText = $('#product-ean').text().trim(); // 示例选择器,请根据实际页面调整
  Logger.log('提取到的EAN:' + eanText);
}

注意事项

  • 确认目标网站允许爬取,遵守其robots.txt协议
  • 如果页面内容是JavaScript动态渲染的,UrlFetchApp无法获取动态加载的内容,需考虑其他方案

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 15:25:09