日記

まじめなブログにしたい・・・

Rawler ブログからのデータ取得

今回のRawlerサンプル https://gist.github.com/3980898

アメブロからのデータ取得用に作ったもの。NameUrlList.tsvにページ一覧のリストを作って置く。フィールドはURLとName。URLにはブログの一覧ページのURLをいれる。文字コードはUTF8。ブログのテキストと、コメント、画像まで取得する。

ポイント

  • 複数のデータを保存する。

これは、ブログのテキストと、コメント、画像のデータを取るため、ひとつのデータベースで言うテーブルではなく、複数のテーブルを使う必要があったので、複数のデータテーブルを使っている。一つのファイルで表現しようとすると、冗長になる。データベースで言う正規化を行う必要がある。

使い方は単純、複数の[FileSave]を置き、FileSaveMode="Append"にする。これは追加書き込みをできるようにする仕組みである。ファイル名も必ず指定する。[DataWrite]は、最も近い上流の[FileSave]にしか反応しないことを注意する。

  • 動的な解析対象のURLの作成

はじめの方の、[Iterator.SourceTree]で読み込むページを動的に作成している。ファイルから、一覧ページのURLを取得し、そのURLからアクセスし、その内容を解析して使うべきURLのリストを作っている。[IteratorSourceAddText]を使うことで、ItIteratorにテキストを送ることができる。この場合、繰り返しでURLのリストを作るので、必ず、IteratorSourceClearでソースリストを空っぽにしておかないと行けない。

  • 一度だけ取得する[PageOnce]

[PageOnce]はページを読んだ時、一度しか行わないことを指定する。Rawlerのページング機能は強力だが、ブログの記事のようにページング外のものを欲しい時もあるのでこの命令を追加した。 [PageOnce]は直前の[Page]を参照して、初めてのページの時に実行され、[NextPage]からのページングの時には実行されない。

  • 画像の保存

画像の取得は、[ImageLinks]→[DownLoad]の流れで取得。保存。この例では、画像の保存するフォルダを動的にするために、[DownLoad.FolderNameTree]を使っている。