秀丸ちま~る >    始めに秀丸のためのリンク集テクニック製作法サンプル早見表人物正規表現/ Web連携プログラム /マクロ DE マクロクロノス・クラウン


10  Web連携プログラム

・ マクロをダウンロード

・ 開始部分 (Webとは無関係)

・ 検索URLの作成

・ クリップボードに文字列をセット

・ なみのり実行

・ Webページから目的のデータを抜き出し

・ 終了部分 (Webとは無関係)

・ 実行サンプル

 このページでは「秀丸エディタ」でWebと連携したマクロを作る方法を、実例を挙げて紹介していきます。

 Webと連携したマクロには、拙作の「なみのり」を使います。

 今回例として使うのは、「ゴーグル・ヒット」というマクロです。

 検索エンジンの「Google」に、特定の単語がいくつ登録されているかを調べるためのマクロです。

 私は、特定のURLがいくつ「Google」に登録されているかで、そのWebサイトの価値を調べようと思いこのマクロを作りました。

 「Google」自体が「そのWebサイトがどれくらいの場所からリンクを張られているか」ということで価値の大小を決める検索エンジンなので、この価値判断方法に適するわけです。

 では、以下に実際のマクロを挙げて解説をしていきます。

● マクロをダウンロード 「ゴーグル・ヒット」(3KB)
 マクロ自体が「Google」のレイアウトに依存しているために、電脳工房には掲載せず、ここにだけ置いておきます。

● 開始部分 (Webとは無関係)

//------------------------------------------------------------------------------
//			「ゴーグル・ヒット」 ver 1.00
//				google_hit.mac
//
//                                                         つくった人 柳井 政和
//                                                      URL : http://crocro.com/
//                                                       ver 1.00完成 2000.10.19
//------------------------------------------------------------------------------
//	本マクロの実行には、柳井政和作の「naminori.mac」が必要です。
//------------------------------------------------------------------------------

   //----------------------------------------------------------------------
   //   現在の秀丸ウィンドウを捕捉
   #handleNow = hidemaruhandle(0);         //handleを取得

   //----------------------------------------------------------------------
   //   結果書き込みウィンドウの作成
   newfile;                      //ファイルの新規作成
   #handleRes = hidemaruhandle(0);         //handleを取得
   insert "===== Google Hit 結果出力 =====";    //ヘッダー作成
   insert "( http://www.google.com/intl/ja/ )=====\n\n";   //ヘッダー作成

   //----------------------------------------------------------------------
   //   作業ウィンドウの作成
   newfile;                      //ファイルの新規作成
   #handleWork = hidemaruhandle(0);         //handleを取得
   showwindow 0;                   //ウィンドウ非表示

   //----------------------------------------------------------------------
   //   データ取得準備
   setactivehidemaru #handleNow;           //現在ウィンドウへ移動
   gofiletop;                     //ファイルの先頭に移動

   //----------------------------------------------------------------------
   //   データ取得ループ
   #a = 0;
   while(true){
      //   各行の文字列を取得
      golinetop; #x1 = x; #y1 = y;        //行の先頭に移動
      golineend; #x2 = x; #y2 = y;        //行の最後に移動
      $line_txt = gettext(#x1,#y1,#x2,#y2);   //文字列取り込み

      //   取得した文字列が空なら次の行へ
      if ( $line_txt == "" )goto Label01;

      //   作業ウィンドウを空に
      setactivehidemaru #handleWork;       //作業ウィンドウへ移動
      selectall;                  //すべてを選択
      backspace;                  //Backspace

      //   作業ウィンドウに文字列張りつけ
      insert $line_txt;

 ここまでは、何の変哲もないプログラムです。

 結果出力ウィンドウと作業ウィンドウを作成し、現在の行を作業ウィンドウに張りつけていく作業を延々とループさせているだけです。

 このあと作業ウィンドウに張りつけた行を、Web連携用に加工する作業が入ります。

● 検索URLの作成

      //   特定文字をエスケープ文字に置き換え
      replaceall "/","%2F";
      replaceall ":","%3A";
      replaceall "~","%7E";
      replaceall "+","%2B";
      replaceall "?","%3F";
      replaceall "=","%3D";

      gofiletop; insert"http://www.google.com/search?q=";
      gofileend; insert"&num=10&meta=hl%3Dja%26lr%3Dlang_ja&safe=off";

 「http://www.google.com/search」が検索エンジンのURLで、「?」以降がパラメータになります。「?データ種類=データ」という組み合わせで延々とパラメータが続きます。

 また、通常の日本語は「なみのり」が自動的に「%nn」といった文字列に変換してくれますが、「/」などのURLに使われる文字は変換してくれません。

 今回は、URL自体を検索エンジンで検索する対象にしますので、「/」などの文字も「%nn」の形に変換してやる必要があります。

 それをおこなっているのが「replaceall "/","%2F";」の部分になります。

● クリップボードに文字列をセット

      gofiletop; insert"(&U)\n";       //なみのり制御用文字列挿入

      //   検索用文字列取得
      gofileend; #x2 = x; #y2 = y;      //行の最後に移動
      $line_search = gettext(0,0,#x2,#y2);  //文字列取り込み

      //   クリップボードに文字列セット
      setclipboard $line_search;       //クリップボードに文字列を記入

 「なみのり」では、クリップボードの文字列を調べて、1行目が「(&U)」であれば2行目のURLを取得するようになっています。

 なので、先ほど作ったURLの1行目に「(&U)」を加え、クリップボードにその文字列をセットしています。

 「なみのり」は、1行目にセットする文字列で、様々な動作を制御しています。

● なみのり実行

      //   取得した文字列でGoogle検索
      execmacro "naminori.mac";       //なみのり実行
      #handleNami = hidemaruhandle(0);   //handleを取得

 「なみのり」を呼び出して作成したURLのページを取得しています。

 ただ、「なみのり」自体の精度がそれほど良くないので、ときどきエラーが発生します。その場合は手動でエラーダイアログを閉じる必要があります。

 これは今後の課題になっています。

● Webページから目的のデータを抜き出し

      //   取得したファイルから件数を抜き出し
      searchdown "約<b>.*</b>件中",regular;
      if ( result ){
         right 4; #x1 = x; #y1 = y;
         searchdown "</b>"; #x2 = x; #y2 = y;
         $line_res = gettext(#x1,#y1,#x2,#y2);   //文字列取り込み
      }else{
         searchdown "results <b>1-";
         if ( result ){
            right 13; #x1 = x; #y1 = y;
            searchdown "</b>"; #x2 = x; #y2 = y;
            $line_res = gettext(#x1,#y1,#x2,#y2);   //文字列取り込み
         }else{
            searchdown "一致するページは見つかりませんでした";
            if ( result ){
               $line_res = "0";
            }else{
               $line_res = "err";
            }
         }
      }

 取得したページの中から、ヒット数を抜き出しています。

 「Google」では、ヒット数によって表示方法が異なっているので、ちょっと複雑な抜き出し方法になっています。

 この部分は、「Google」自体表示方法が変わると書き換えないと行けない部分になるので、少々管理が面倒です。

 使用するときには、きちんと動作するか事前に確認する必要があるでしょう。

● 終了部分 (Webとは無関係)

      //   開いたウィンドウを閉じる
      setactivehidemaru #handleRes;      //結果書き出しウィンドウへ移動
      closehidemaruforced #handleNami;    //なみウィンドウを強制終了

      //   件数、URLを書き出し
      gofileend;            //行の最後に移動
      insert $line_res+"\t"+$line_txt+"\n";

      Label01:
      setactivehidemaru #handleNow;      //現在ウィンドウへ移動
      movetolineno 1,#a+1;           //任意の位置へのカーソル移動
      down;                   //カーソル下移動
      if ( !result )break;           //最終行であれば終了
      #a = #a+1;
   }

   //----------------------------------------------------------------------
   //   終了処理
   setactivehidemaru #handleRes;         //結果書き出しウィンドウへ移動
   closehidemaruforced #handleWork;       //作業ウィンドウを強制終了

//------------------------------------------------------------------------------
//                                              copyright (c)2000 Masakazu Yanai

 以上でWeb連携プログラムは終了です。実際に実行した場合の結果サンプルを以下に示しておきます。

● 検索ページ
http://www.yahoo.co.jp/
http://www.goo.ne.jp/
http://www.infoseek.co.jp/
http://www.lycos.co.jp/
http://www2s.biglobe.ne.jp/~yanai/
● 結果ページ

===== Google Hit 結果出力 =====( http://www.google.com/intl/ja/ )=====

33900	http://www.yahoo.co.jp/
7320	http://www.goo.ne.jp/
2480	http://www.infoseek.co.jp/
2390	http://www.lycos.co.jp/
149	http://www2s.biglobe.ne.jp/~yanai/



Cronus Crown(クロノス・クラウン)のトップページに戻る
(c)2002-2022 Cronus Crown (c)1997-2022 Masakazu Yanai
ご意見・お問い合わせはサイト情報 弊社への連絡までお願いします
プライバシーポリシー