0

私がやろうとしているのは、最終的にスプレッドシートに保存されるWebページから、すべての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セクションを参照していますが、そこにある多くのものはGoogleScriptsでは機能しません。ここに何が欠けているのかわかりませんが、正規表現は間違っていますか?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 に答える