0

私の問題は2つの部分にありますが、1つを解決することでもう1つが解決されることを願っています。ページを解析して、フォーラム スレッド内で見つかったすべてのコメントを取得しようとしています。

コメントは RegEx パターンを使用して検出されます。これは、コメントがなくなるまで、コメントにあるものはすべて配列に読み込まれるという考え方です。各コメント div はこの形式に従います

<div id="post_message_480683" style="margin-right:2px;"> something </div>

各番号はランダムに生成され、その特定の div の間にあるものを取得するように見えるため、「post_message_[some number]」まで検索しようとしています。私の最初の問題は、正規表現が機能していないように見えることです。いくつか試してみましたが、何も結果が得られませんでした (投稿メッセージ番号を手動で挿入した場合を除く)。これまでのコードは次のとおりです。

function GetPosts() {
   var posts = new Array(60);
   var url = "http://forums.blackmesasource.com/showthread.php?p=480683";
   var geturl = UrlFetchApp.fetch(url).getContentText().toString();
   var post_match = geturl.match(/<div id="post_message_(.+)" style="margin-right:2px;">(\w.+)<\/div>/m);
   Logger.log(post_match); 
   } 

編集: 最初に、GAS の Xml.Parse() クラスを介してこの情報を取得しようとしましたが、URL を取得した後、接尾辞を付けてから何をすべきかわかりませんでした

.getElement().getElement('div') (I also tried .getElements('div') and other variations with 'body' & 'html') 

エラーの原因になります。正規表現ルートを試す前に試した最後のコードは次のとおりです。

function TestArea() {
  var url = "http://forums.blackmesasource.com/showthread.php?p=480683";
  var geturl = UrlFetchApp.fetch(url).getContentText().toString();

  //after this point things stop making sense
  var parseurl = Xml.parse(geturl, true);
  Logger.log(geturl);

   //None of this makes sense because I don't know HOW! 
   //The idea: Store each cleaned up Message Div in an Array called posts 
   //(usually it's no more than 50 per page) 
   //use a for loop to write each message into a row in GoogleSpreasheet
    for (var i = 0; i <= parseurl - 1; i++) {
      var display = parseurl[i];
      Logger.log(parseurl); }
}  

読んでくれてありがとう!

4

1 に答える 1

0

一般に、コメントが指摘するように、HTML を RegEx で解析することに注意してください。

私の過去の個人的な経験では、Yahoo の YQL プラットフォームを使用して HTML を実行し、サービス上で XPath を使用しました。シンプルで信頼性の高いマークアップでは、うまく機能しているようです。次に、それを JSON または XML REST サービスに変換して、UrlFetch を介して取得し、その単純化された応答に取り組むことができます。ここでは推奨しませんが、完全な生の HTML を Google Apps Script に取り込むよりも簡単かもしれません。YQL コンソールについては、以下を参照してください。また、彼らのクォータが何であるかもわかりません-それを確認する必要があります.

もちろん、最善の方法は、サイト所有者に RSS フィードまたは API を提供するよう説得することです。

YQL コンソール

于 2012-10-16T14:11:53.330 に答える