使用 Google-apps-script 从 Google 搜索中抓取错误 429

Error 429 on scraping from Google search with Google-apps-script

我想获取特定域的索引页数。因此我想使用“site:”参数并从搜索结果页面中提取结果数。

我用 Google-apps-script 尝试了 Google 个电子表格:

function sampleFormula_4() {
  const url = "https://www.google.com/search?q=site%3Abenedikt-sahlmueller.de";
  
  try {
    const html = UrlFetchApp.fetch(url).getContentText();
    return html.match(/<div id="result-stats">(.+?)nobr>/)[1].trim();

  } catch (e) {
    Utilities.sleep(5000);
    const html = UrlFetchApp.fetch(url).getContentText();
    return html.match(/<div id="result-stats">(.+?)nobr>/)[1].trim();
  }
}

Google 电子表格显示错误 429 - 请求过多。我集成了 5000ms 的休眠时间,但是 Google 搜索仍然 returns 错误 429.

我只需要 Google 的搜索结果中某些网址的页数。也许有更好的方法 - 我不能为此使用搜索-api,因为这些页面不是我的 GSC 的一部分。

很可能 Google 搜索将来自 UrlFetch 的请求视为自动流量并因此阻止它们。来自 the official docs:

What Google considers automated traffic

  • Sending searches from a robot, computer program, automated service, or search scraper

例如,使用 wgetcurl 等工具时会发生相同的行为。

建议使用 Search API

相关: