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

Google Sheets脚本无法从Bricklink抓取均价问题求助

排查Bricklink均价抓取正则匹配失败问题

1. 确认页面内容获取有效性

  • 用Logger.log()输出完整抓取的HTML内容,对比浏览器中查看的页面源码。Bricklink可能对非浏览器请求返回不同内容(如反爬拦截、动态渲染数据),若静态HTML中没有目标均价,正则自然无法匹配。
  • 若均价是通过JavaScript异步加载的,UrlFetchApp.fetch()仅能获取静态HTML,需改用接口调用方式获取数据。

2. 适配实际HTML结构调整正则

  • 即使测试网站正则有效,也要确认实际抓取的HTML中价格的原始格式:比如是否被特定标签包裹、是否存在额外空格或隐藏字符。例如目标价格可能是<span class="avg-price">12,438.02 HUF</span>,正则需适配该结构。
  • 针对匈牙利福林格式,可尝试精准正则(需根据实际HTML调整):
    const priceRegex = /(\d{1,3}(?:,\d{3})*\.\d{2}) HUF/;
    
  • 开启单行模式(s修饰符)让.匹配换行符,避免HTML换行导致匹配中断:
    const priceMatch = html.match(/(\d{1,3}(?:,\d{3})*\.\d{2}) HUF/s);
    

3. 分步验证匹配逻辑

  • 先定位到新品近6个月均价的目标区域,再在该区域内匹配价格,缩小匹配范围提升准确性:
    const html = UrlFetchApp.fetch(url, {headers: {"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"}}).getContentText();
    // 替换成实际的目标区域选择器对应的正则
    const sectionMatch = html.match(/<div class="new-6month-avg">(.*?)<\/div>/s);
    if (sectionMatch) {
      const priceMatch = sectionMatch[1].match(/(\d{1,3}(?:,\d{3})*\.\d{2})/);
      Logger.log(priceMatch ? `匹配到价格:${priceMatch[1]}` : "区域内无匹配价格");
    } else {
      Logger.log("未找到目标均价区域");
    }
    

4. 检查请求头配置

  • 添加模拟浏览器的请求头,避免被Bricklink识别为非合法请求:
    const fetchOptions = {
      headers: {
        "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",
        "Accept-Language": "hu-HU,hu;q=0.9"
      }
    };
    const html = UrlFetchApp.fetch(targetUrl, fetchOptions).getContentText();
    

5. 确认数据加载方式

  • 手动查看Bricklink页面的开发者工具(F12):若均价数据是通过XHR请求加载的,直接调用对应接口获取JSON数据,比解析HTML更稳定可靠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 12:31:09