首页 > 解决方案 > 全部退回

带有应用程序脚本的标签

问题描述

我正在尝试使用 Google 电子表格中的应用程序脚本在网页中返回标题、H 标签和 P 标签。

我试过这个功能,但它似乎没有根据来源检索一些标签。

function myfunction(url) {
  var _options = {
    method: "GET"
  };

  try {
    var _response = UrlFetchApp.fetch(url, _options);
    var _regexp =  /<title[^>]*?>(.*?)<\/title>|.*<h[1-6][^>]*?>(.*?)<\/h[1-6]>|<p[^>]*?>.*?<\/p>/gi;
        var _tag = _response.getContentText().match(_regexp);

    return _tag;
  } catch (e) {
    return e;
  }
}

例如,此站点不返回 H1 标记。

我是应用程序脚本和正则表达式的新手,如果我能得到一些提示,那就太好了。

谢谢你!

标签: google-apps-scriptspreadsheet

解决方案


使用更新的正则表达式,代码将如下所示:

function myfunction(url) {
  var _options = {
    method: "GET"
  };

  try {
    var _response = UrlFetchApp.fetch(url, _options);
    var _regexp =  /<title[^>]*?>(.|\n|\r)*?<\/title>|.*<h[1-6][^>]*?>(.|\n|\r)*?<\/h[1-6]>|<p[^>]*?>(.|\n|\r)*?<\/p>/gi;
        var _tag = _response.getContentText().match(_regexp);

    return _tag;
  } catch (e) {
    return e;
  }
}

最初的问题是.正则表达式不包括换行符。这已通过替换 修复.(.|\n|\r)其中包括换行符。


推荐阅读