次へ: 6 各部分の作成 上へ: AWK によるシェル作業 前へ: 4 複数ページの記事一覧ファイル (PDF ファイル: awkwww4.pdf)


5 全体のおおまかな構造

今回作成する AWK スクリプトは、 入力は特になくてシェル作業を行うだけなので BEGIN ブロックだけで足ります。 4 節の作業を疑似コードにしてみると以下のようになります。

##### プログラム本体 #####
  BEGIN{
      # (1) 先頭のページを soci-001.html として取得
      # (2) そこから全部で何ページあるかを読みとる (= pages とする)
      for(j=1;j<pages;j++){
         # (3) 先頭ページの URL の最後に "$p=j" をつけて HTML ファイルを
         #     取得し soci-[j+1].html として保存する
      }
      # (4) awk -f yahoo2.awk soci-001.html soci-002.html ... \
      #       > soci-lst1.html
      #     を system() で実行する
      # (5) awk -f yahoo3-soci.awk -f yahoo3.awk soci-lst1.html \
      #       > soci-lst2.html
      #     を system() で実行する
  }

なお、yahoo2.awk は、[5] で紹介した、 複数の一覧ファイルから余分なものを除いて一つの HTML ファイルに連結するための AWK スクリプトで、 yahoo3-soci.awk, yahoo3.awk は、それぞれ [6] で紹介した、 連結されたリストからジャンル分けする際のパターン定義部分の AWK スクリプトと 共有部分の AWK スクリプトであるとします。

(4),(5) はコマンドラインを生成して system() に渡して実行するだけですし、 (1),(3) は

wget -O soci-001.html "http://.../hl?c=soci&t=l"
(URL は長いので途中省略) 等を system() で実行するだけなので、 特に考える必要があるのは (2) ということになります。 しかし、(2) も getline, match(), substr() を使う程度で、 それ程難しくはありません。


次へ: 6 各部分の作成 上へ: AWK によるシェル作業 前へ: 4 複数ページの記事一覧ファイル
竹野茂治@新潟工科大学
2006年9月29日