【问题标题】:How to get google search output in the google application script environment?如何在google应用脚本环境下获取google搜索输出?
【发布时间】:2015-03-13 03:59:08
【问题描述】:

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

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);
}

并获取
关于此页面

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

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

【问题讨论】:

标签: javascript google-apps-script google-search


【解决方案1】:

您可以对extract Google search results 使用简单的正则表达式。

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

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

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

见:Scrape Google Search with Sheets

【讨论】:

  • 我可以知道为什么您网站上的示例无法使用 urlfetchApp 吗?我想获取标题、网址和描述,但需要正确的正则表达式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-26
  • 2013-06-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多