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

多URL网页抓取脚本如何使用迭代器减少重复代码(适配Google Sheets)

批量抓取迭代逻辑实现方案

你只需修改priceScraper函数即可实现批量URL自动抓取,原有getData、getItemNumber、outWithTheOldInWithTheNew函数无需改动,重复注释的多份getData代码可以直接删除。

修改后的priceScraper代码

function priceScraper() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const totalListSheet = ss.getSheetByName('TotalList');
  const graingerSheet = ss.getSheetByName('Graingerscrape');
  
  // 读取H列从第9行开始的所有URL,过滤空值
  const urlRange = totalListSheet.getRange('H9:H' + totalListSheet.getLastRow());
  const urls = urlRange.getValues().flat().filter(url => url.trim() !== '');

  // 遍历所有URL执行抓取
  for (const url of urls) {
    try {
      // 抓取价格并格式化
      const price = getData(url).replace("$","").replace(/\s/g, "");
      // 抓取商品编号
      const itemNumber = getItemNumber(url);
      // 写入结果表
      graingerSheet.appendRow([itemNumber, new Date(), price]);
    } catch (e) {
      // 单条URL抓取失败时输出日志,不中断整体流程
      Logger.log(`URL抓取失败:${url},错误信息:${e.message}`);
    }
  }
}

逻辑说明

  • 一次性读取整列URL,比逐个读取单元格效率更高
  • 复用原有单URL的抓取逻辑,无需重复编写功能代码
  • 新增异常捕获机制,单条URL失效、网络波动等问题不会导致整个脚本终止
  • 后续新增待抓取商品,只需把URL追加到TotalList表H列的末尾即可,无需修改任何代码

可选优化(按需使用)

如果不想每次全量抓取所有URL,可以在TotalList表新增一列标记是否已抓取,循环时跳过已标记的行即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:48:02