GoogleAppsScript:解析HTML后如何修剪字符串?

时间:2012-09-27 22:40:59

标签: google-apps-script

我要做的是解析&从网页中提取没有所有HTML gunk的电影标题,最终将其保存到电子表格中。我的代码:

function myFunction() {
   var url = UrlFetchApp.fetch("http://boxofficemojo.com/movies/?id=clashofthetitans2.htm")
   var doc = url.getContentText()
   var patt1 = doc.match(/<font face\=\"Verdana\"\ssize\=\"6\"><b>.*?<\/b>/i);

      //var cleaned = patt1.replace(/^<font face\=\"Verdana\" size\=\"6\"><b>/,"");
      //Logger.log(cleaned); Didn't work, get "cannot find function in object" error.
      //so tried making a function below:   

   String.trim = function() {
     return this.replace(/^\W<font face\=\"Verdana\"\ssize\=\"6\"><b>/,""); }
   Logger.log(patt1.trim());
 }

我对这一切都很陌生(编程和一般的GoogleScripting)我一直在引用w3school.com的JavaScript部分,但很多东西都不适用于Google Scripts。我只是不确定这里缺少什么,我的RegEx错了吗?有没有更好/更快的方法来提取这些数据而不是RegEx?任何帮助都会很棒,感谢阅读!

1 个答案:

答案 0 :(得分:2)

虽然尝试从不受您控制的HTML中解析信息总是有点挑战,但有一种方法可以让您更轻松地实现这一目标。

我注意到每个电影页面的标题元素也包含电影标题,如下所示:

<title>Wrath of the Titans (2012) - Box Office Mojo</title>

你可能会更成功地解析标题,因为它可能更稳定。

var url = UrlFetchApp.fetch("http://boxofficemojo.com/movies/?id=clashofthetitans2.htm");
var doc = url.getContentText();
var match = content.match(/<title>(.+) \([0-9]{4}\) -/);
Logger.log("Movie title is " + match[1]);