0

我要做的是从网页中解析和提取电影标题,而不需要所有的 HTML 垃圾,最终将保存到电子表格中。我的代码:

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?任何帮助都会很棒,感谢阅读!

4

1 回答 1

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]);
于 2012-09-29T13:34:00.153 回答