如何在谷歌应用程序脚本环境中获取谷歌搜索输出

How to get google search output in the google application script environment?

本文关键字:谷歌 获取 搜索 输出 环境 脚本 应用程序      更新时间:2023-09-26

如果我使用下一个函数来获取谷歌输出:

function myFunction() {
  var post_url, result;
  post_url = "http://www.google.com/search?q=stack+overflow";
  result = UrlFetchApp.fetch(post_url);
  Logger.log(result);
}

不行。
附言对不起,我必须解决一些依赖关系。我举个例子

function scrapeGoogle() {
  var response = UrlFetchApp.fetch("http://www.google.com/search?q=labnol");
  var myRegexp = /<h3 class='"r'">(['s'S]*?)<'/h3>/gi;
  var elems = response.getContentText().match(myRegexp);
  for(var i in elems) {
    var title = elems[i].replace(/(^'s+)|('s+$)/g, "")
                        .replace(/<'/?[^>]+>/gi, "");
    Logger.log(title);
  }
}

它有效,而不是我开始进行一些修改并注意到当我在代码中出现一些错误时,它会给我一个错误

请求返回 http://www.google.com/search?q=labnol 代码失败 503.

所以我做了一些没有错误的研究,它的解决方案有效。但是当我开始在 lib 中形成函数时,它开始每次给我一个 503 的错误!
我对这种行为感到非常惊讶...
这是仅供事实使用的短视频。
https://youtu.be/Lem9eiIVY0I附言哦!我违反了一些违规行为,所以谷歌引擎将我发送到停止列表所以我运行这个:

function scrapeGoogle() {
  var options =
     { 
       'muteHttpExceptions': true
     }
  var response = UrlFetchApp.fetch("http://www.google.com/search?q=labnol", options);
  Logger.log(response);
}

并得到
关于本页

我们的系统检测到来自您的计算机网络的异常流量。 此页面检查是否真的是您发送请求,而不是机器人。 为什么会这样?

如我所见,我必须使用一些特殊的谷歌服务来获取搜索输出而不是被禁止?

您可以使用简单的正则表达式来提取Google搜索结果。

  var regex = /<h3 class='"r'">(['s'S]*?)<'/h3>/gi;  
  var items = response.getContentText().match(regex);

或者,您可以在工作表中使用 ImportXML 函数。

  =IMPORTXML(GOOGLE_URL, "//h3[@class='r']")

请参阅: 使用表格抓取谷歌搜索