日経Web刊、紙面ビューア用画像取得スクリプト(Python)

先日書いた日経Web刊 紙面ビューア、ほんの少しだけ技術面の続きとなります。

大事な前書き

結構デリケートなものでありますので、本題の前に少々断りごとを記載します。
今回のツールを含め、みゅおの取り組んでいるものは全てnikkei.comでの(2010年5月以降の)有料会員登録を行わずに記事を読んだり、課金を回避したりするような目的のものではありません。あくまでも正規会員の方が自身の責任で(アカウント停止など、日経新聞社の判断で行われる可能性を認識しつつ)利便性を追求するためのものです。
本来、日経新聞社自体がスマートフォン向けのきちんとしたビューア類を公式展開して頂ければこれに勝るものはありません。しかしながら現状としてAndroidはおろかiPhone向けすら公式ビューアが提供されていません(2010年4月5日現在)。おそらく2010年4月にローンチを間に合わせるというスケジュールや投下資本に対するリターンといった諸々を検討した上で現在の機能や対応プラットフォームへと落ち着いているはずで、企業活動としては至極当然の判断でしょう。
しかし、みゅおとしては長年待ちに待った日経朝刊をスマートフォンで読めるところまであと一歩となっている、技術的にはアクセスも可能である、しかし公式ビューアが無いためアクセス出来ない・・という状況が残念すぎるのです。
このため、みゅおは独自にデータ取得や閲覧を出来るようにしようとする試みを行っています。
その成果は極力オープンにしていこうと考えていますが、それらを利用することで利用者の方と日経新聞社との間でトラブルが発生する可能性は否定出来ません。また産経新聞の紙面ビューアとは違ってnikkei.comへの登録時点で、ある程度の個人情報を日経新聞社側へ渡している認識も持ちつつ使って頂きたいと願っております(日経新聞社側でリクエスト送信のパターンからツール利用者を抽出するのは造作も無いことでしょう)。

何をするツールか

前書きが長くてすみません。本題です。
このスクリプトは、最新の日経朝刊について日経Web刊の紙面ビューア用JPEG画像と紙面一覧xmlファイルを取得してくるものです。機能としては

  • nikkei.comへログインする
  • 最新朝刊のサムネイル、通常画像、詳細画像を取得する(このとき、サムネイル→通常画像→詳細画像の順で取得する)

を持っています。CUIツールで延々裏側で処理をして無言で終了します。気の利いたGUIなどは残念ながらありません。一応裏側でログは出力しているので、エラー終了時などには参照ください。

これが出来て何がうれしいか

  • あまり一般の方にはうれしくないでしょう(紙面コレクターの人にはうれしいのかもしれません)。
  • Flash環境用のビューアなどを開発している人にとっては何かの参考になるかもしれません。
  • PCでもAtom環境などFlash版ビューアが重過ぎるという場合は、DirectXなどで簡単なビューアを書くことでかなりレスポンスを改善できるかもしれません。


本エントリ末尾にソース全文を貼り付けておきます(Google Codeからの取得はこちら)。

使い方

	'loginId' : 'username@example.com',
	'loginPass' : 'password',
	'dataDir' : 'C:\\Users\\testuser\\Desktop\\data',

上記のloginIdをnikkei.comの登録メールアドレスに、loginPassをパスワード(平文)に、dataDirを紙面データの保存先ディレクトリに変更して実行してください。途中でエラーとなって取得が失敗した場合は、再実行することで残分を取得出来ます。

ソースについて少々コメント

  • コメントはありませんがログ出力を結構大量に埋め込んでいるので挙動が気になる場合はそちらを読んでください。
  • 実行するとカレントディレクトリにcookies.txtが作成されますが、現状特に意味はありません(ログイン状態記憶等がサイト自体に実装されていないのでセッション継続への利用も出来ない)。気になるようだったらLWPCookieJarを使わないようにするなど適当にいじってください。
  • 実際の画像取得部分には前のエントリで書いたように適当なウェイトを入れています。ソース的にウェイトを外すことは簡単ですが、「ぶっこぬき」っぽい挙動はあなた自身のアカウント寿命を縮めるような気がしませんか?
  • あまり読まない面の詳細画像を取得せずに負荷軽減する機能は残念ながらまだ実装していません。ご要望頂ければ早めに実装しますのでblogのコメント欄でも@muo_jp宛でも結構ですのでコメントください。

ソース

日経新聞社からのクレームにより削除いたしました。各位にお詫び申し上げます。