今日は久しぶりにPCを使ったお仕事です。最近PCをあんまり仕事で使わなくなったので、メールチェックを始めスマートフォンばっかり使っています。

さて、今日はお仕事の関係であらかじめ手元に確保しておきたいファイルをネットで集めてくる作業をしようと思ったわけです。Web関係の仕事をする以前はHTMLの知識ですら概念的な学習で、実践が伴わなかったものですが、すっかりHTMLだけでなくJavascriptも一応読めるスキルが身についている様で、ソースを読んで規則性を見出し、URLリストを生成してダウンロードツールで自動的にダウンロードさせるべく横着する方法を考えます。

ちなみに未だに使っているダウンロードツールはIrvineです。Irvineは非常に優れたダウンローダーで、Windows 7でも不自由なく使用できるのがありがたいことです。

未だにプログラミングは苦手なままでずるずるとしていますが、UNIX系のOSに慣れ親しんできたお陰で、テキストファイルの自動処理には色々な方法があることを当たり前のように現在では思っています。

今回は、約1,000個のhtmlファイル(目的とするファイルのURLがJavascriptで記述されている)から、必要とする行を取り出して、一つのファイルに集約したいのです。そうすれば、それをIrvineに自動処理させられます。言うまでもなく、約1,000個のhtmlファイルはIrvineで収集しました。(先方のサーバーに負荷をかけると失礼なのでゆっくり時間をかけてダウンロードします。)

さて、htmlファイルから必要な部分を取り出すのは、やっぱり慣れたawkが良いなぁと思う次第です。phpとかPerlとか使える人は余裕でしょうが、私は相変わらずプログラミング言語がだめです。awkはその点基礎知識だけで結果が得られるからうれしい言語です。

過程はどうあれ結果命の「ビジネスマンの友だち」でもありますね(w

さて、1,000個のファイルから抽出した情報を1つのファイルに集約するのは、「おーくの友だち」に任せます。そう言えば1,000個ものファイルを処理させたことは無かったな。どれくらい処理が遅くなるか気になります。

その前に「おーくの友だち」をWindows 7環境にインストールせねばなりません。以前使っていたWindows XP環境は、Windows Updateの翌日起動しなくなり、考えうる修復が通用せず断念しましたのでWindows7をクリーンインストールです(笑

おーくの友だちのインストール、実はやることは簡単です。

  1. おーくの友だちをダウンロードして来る
  2. 圧縮を解凍する
  3. 任意のフォルダ(C:\Program Files (x86)\)に配置する
  4. gawkm115をダウンロードして来る
  5. 圧縮を解凍する
  6. 任意のフォルダ(C:\Program Files (x86)\Fowawk111)に配置する
  7. おーくの友だちのショートカットを任意(デスクトップにでも)作る
  8. おーくの友だちを起動して、ファイル-環境設定から、gawk.exeの場所を定義する

通常はこれで済みなのですが、もう一手間かけておくと、後におーくの友だち(Fowark111フォルダ)を移動させた場合にgawk.exeが行方不明にならなくて便利なので私は下記の一手間を行なっています。

環境設定 20120901 154958

  1. おーくの友だちを一度終了させる。
  2. Fowawk111フォルダ内のFORAWK.INIをメモ帳で開く
  3. INIファイルに記されたgawk.exeのPATHを相対パスに書き換える(例:Path=gawkm115\gawk.exe)
  4. おーくの友だちを起動する
  5. 動作を検証してgawk.exeの所在が正しく設定できているか確認する

以上でインストールは終了です。

後はバシバシawkスクリプトを書いていくのみです。とは言っても私は大層なスクリプトは書きません(書けません)。条件分岐とか避けられなくなると毎度毎度頭が痛くなる・・

あ、肝心のテキストファイルマージは、おーくの友だちで簡単に設定できます。出力先を1つのファイルにすれば良いのです。追記、追記の繰り返しですね。Outputの指定をプルダウンメニューで

3 File(ファイル単一追加)

とするだけです。

後はファイル名を指定して新規か既存ファイルに追記するかを選べます。こういう挙動の指定は、UNIX系のOSでは、awkコマンドに追記するパラメータで制御できるのですが、Windows環境では、おーくの友だちに任せるとパラメータを覚える必要が無いので楽勝です。本当にありがたいツールです。

もちろん約1,000個のhtmlファイルから必要な部分を抽出して一つのファイルにマージする処理は問題なくできました。ファイルのOPEN/CLOSEに若干時間がかかるみたいで、待たされる時間はありますが、それでも1分もあれば十分。またawkのお世話になってしまいました。

これで、ダウンロードしたいファイルのURLリストが出来上がりました。私の目的を果たすための作業の9割は終了です。今回はawkで抽出する内容は記しませんでしたが、複数ファイルから欲しい情報を取り出して1つのファイルにまとめることが出来るという事を記したかった次第です。

後のダウンロード処理はIrvineに任せて、コーヒーでも飲んでいようかな(w