08 csvファイル出力

これまで、抽出した情報は画面に表示されるだけでしたが、それだけでは不便です。ここでは、csvファイルに出力するロボットを作ってみましょう。


【1】作成するロボットの概要

価格.comのノートパソコン人気売れ筋ランキングのページから、ランキングデータの一覧をcsvファイルに出力する。

《ノートパソコン人気売れ筋ランキングのURL》

  https://kakaku.com/pc/note-pc/ranking_0020/?

 ※実際に操作をしてみてくださいね。


【2】操作手順を考える

 操作1:ブラウザで価格.comのノートパソコン人気売れ筋ランキングのページを開く。

 操作2:csvファイルのヘッダーを出力する。

以下、表示されているランキングの一覧を繰り返す。

   操作3:[順位]を抽出する。

   操作4:[タイトル]を抽出する。

   操作5:[メーカー]を抽出する。

   操作6:[最安値]を抽出する。

   操作7:[満足度]を抽出する。

   操作8:[発売日]を抽出する。

   操作9:[リンク先URL]を抽出する。

   操作10:操作3~9をcsvファイルに出力する。


【3】タイプ(変数)を作成する

(1)プロジェクト・ビューの[研究ロボ]を右クリック→[新規作成]→[Type]をクリックします。


(2)次に、[タイプ名]は「ノートPCランキング情報.type」と入力して、[終了]をクリックします。


(3)[ノートPCランキング情報.type]が作成され、タイプ・エディタが表示されたら[+]をクリックします。


(4)そして、変数をひとつずつ作成していきます。


《作成する変数の名前と種類》

名前種類
順位整数(Integer)
タイトルショートテキスト(Short Text)
メーカーショートテキスト(Short Text)
最安値整数(Integer)
満足度数値(Number)  ※小数点あり
発売日ショートテキスト(Short Text)
リンク先URLショートテキスト(Short Text)

(5)これで、タイプと変数の作成は終わりです。画面左上の[すべて保存]をクリックして保存します。


【4】ロボットを作成する

【4-1】ロボットを新規作成して変数を追加する

(1)プロジェクト・ビューの[研究ロボ]を右クリック→[新規作成]→[Robot]をクリックします。


(2)次に、[ロボット名]は「ノートPCランキングcsv出力.robot」と入力して、[次へ >]をクリックします。

そして、[ロボットを開始するURLを入力]は、価格.comのノートパソコン人気売れ筋ランキングのURLを入力して、[終了]をクリックします。

《ノートパソコン人気売れ筋ランキングのURL》

  https://kakaku.com/pc/note-pc/ranking_0020/?


(3)プロジェクト・ビューに[ノートPCランキングcsv出力.robot]が作成され、ロボット・ビューに[Load Page]ステップが追加されて自動実行されます。ブラウザ・ビューには、価格.comのノートパソコン人気売れ筋ランキングが表示されます。

ここで、さきほど作成したタイプの変数を追加するために、変数・ビューの左下にある[+]をクリックします。


(4)次に、[タイプと初期 / テスト値]のプルダウンメニューから[ノートPCランキング情報]を選択します。


(5)[OK]をクリックすると、「変数に名前がありません」というメッセージボックスが表示されます。ここでは、名前はタイプ名と同じでよいので[はい]をクリックしてください。


(6)すると、変数・ビューに[ノートpcランキング情報]というタイプの変数が追加されます。


【4-2】csvファイルのヘッダーを出力する

ここでは、csvファイルのヘッダーを出力するステップを追加します。csvファイルを出力する手順は、下図のとおりです。


(1)画面上部の[選択したステップの前にステップを挿入]をクリック→[アクションステップ]をクリックします。


(2)次に、ステップ・ビューの[アクションを選択]をクリック→[ファイルシステム]→[ファイル出力]をクリックします。


(3)[ファイル名]は、出力するcsvファイルのフルパスを入力します。

  例 : C:\Users\(ユーザー名)\Documents\ノートPCランキング情報.csv

(4)そして、[ファイルコンテンツ]の右端にある[▼]をクリック→[コンバータ]をクリックします。


(5)[ファイルコンテンツ]には、初期設定で[変数の取得]が追加されていますので、[-]をクリックして除去します。


(6)次に、[値]の左下にある[+]をクリック→[出力値フォーマットの処理]→[CSVに追加]をクリックします。


(7)次のようなダイアログが表示されますので、[フォーマットを適用する変数]は[ノートpcランキング情報]を選択、[ヘッダーを作成]にチェックを入れます。

すると、[テスト出力]にヘッダーの値が表示されますので、確認してから[OK]をクリックしてください。


(8)ステップ・ビューの[ファイルコンテンツ]に[ノートpcランキング情報 を CSVとして追加]というアクションが追加されます。


(9)このままでは日本語が正常に出力されませんので、[ファイルエンコーディング]は[windows 日本語 (windows-31j)]を選択します。


【4-3】繰り返しのステップを追加する

(1)タイトルの部分を右クリック→[ループ]→[クラス付タグ繰り返し]→[rkgBoxNameItem]をクリックします。


(2)すると、繰り返しステップ[For Each Tag Path]が追加されます。


(3)ここで、繰り返しが正常に動くか試してみましょう。

[For Each Tag Path]ステップの[>]をクリックして繰り返し回数(イテレーション)を1つ進めます。

そして、1位のタイトルにあった青枠(繰り返しの目印)が、2位のタイトルに移動することを確認します。3位以降も試してみましょう。


【4-4】ランキング情報を抽出する

(1)イテレーションを[1]に戻してから、1位の順位を右クリック→[抽出]→[数値]→[ノートPCランキング情報.順位]をクリックします。


(2)そして、そのまま[OK]をクリックします。


(3)次に、1位のタイトルを右クリック→[抽出]→[ショートテキスト]→[ノートpcランキング情報.タイトル]をクリックします。


(4)さらに、1位のメーカーを右クリック→[抽出]→[ショートテキスト]→[ノートpcランキング情報.メーカー]をクリックします。


(5)続けて、1位の最安値を右クリック→[抽出]→[数値]→[ノートpcランキング情報.最安値]をクリックします。


(6)そして、そのまま[OK]をクリックします。


(7)次に、1位の満足度を右クリック→[抽出]→[数値]→[ノートpcランキング情報.満足度]をクリックします。


(8)そして、そのまま[OK]をクリックします。


(9)次に、1位の発売日を右クリック→[抽出]→[発売日]→[ノートpcランキング情報.発売日]をクリックします。


(10)さらに、1位のタイトルを右クリック→[抽出]→[URL]→[ノートpcランキング情報.リンク先URL]をクリックします。


(11)これで、ノートPCランキング情報の抽出は終わりです。変数・ビューで1位の情報を確認してみましょう。


【4-5】抽出した情報を確認する

ここで、イテレーションを1つずつ進めながら、変数・ビューに表示される情報を確認していきます。

すると、ブラウザ・ビューの2位の満足度は「4.68」ですが、変数・ビューの[満足度]には「5」が表示されています。


そして、ブラウザ・ビューの3位の満足度は「-」ですが、変数・ビューの[満足度]には「5」が表示されています。


ブラウザ・ビューの青枠(繰り返しの目印)は1位→2位→3位…と移動して、変数・ビューの[順位]や[タイトル]などもその順位の情報が表示されますが、満足度だけは1位の値のままです。どうやら、[満足度]の抽出に問題がありそうです。

 ※2位以下のデータで、1位と同じ満足度ではないときに発生します。


そこで、[満足度]が正常に抽出できない原因を調べるために、[満足度]の抽出ステップの設定を確認してみましょう。

まず、[満足度]に誤りがあるデータまでイテレーションを進めます。ここでは2位のデータなので、イテレーションを「2」にします。そして、[Extract 満足度]ステップをクリックして、ブラウザ・ビューのオレンジ枠(抽出対象)がどこにあるのかを確認します。

すると、2位の[満足度]を抽出すべきところで、5位の[満足度]を抽出していることがわかります。


さらに、イテレーションを「3」にして、3位の[満足度]のオレンジ枠(抽出対象)を確認してみると、こちらも5位の[満足度]になっていることがわかります。


こうして確認してみると、オレンジ枠(抽出対象)の設定に誤りがありそうだと推測できますので、設定を確認してみましょう。

下図のように、ソース・ビューの枠を広げて、HTMLのソースコードが見えるようにしてから、ブラウザ・ビューの1位の満足度をクリックします。すると、緑色の枠(選択対象)がブラウザ・ビューとソース・ビューの両方に表示されます。


ここで重要なのが、HTMLの「タグ」という目印です。

ソース・ビューの緑色の枠(1位の満足度)のタグ(<span class=”point rank5″>)を分解すると、次のようになります。

タグ   : span
属性名  : class
属性値  : point rank5   ※属性 class に設定されている値

次に、ブラウザ・ビューの2位の満足度をクリックします。すると、さきほどと同じように、緑色の枠がブラウザ・ビューとソース・ビューの両方に表示されます。


そして、ソース・ビューの緑色の枠(2位の満足度)のタグ(<span class=”point rank4h”>)を分解すると、次のようになります。

タグ   : span
属性名  : class
属性値  : point rank4h   ※属性 class に設定されている値

しつこいようですが、次に、ブラウザ・ビューの3位の満足度をクリックします。そして、緑色の枠を確認します。


ブラウザ・ビューの緑色の枠(3位の満足度)のタグ(<span class=”point rank0″>)を分解すると、次のようになります。

タグ   : span
属性名  : class
属性値  : point rank0   ※属性 class に設定されている値

ここまでで、[満足度]がなぜ正しく抽出できないのか、何となくわかったのではないでしょうか。

ここから、[満足度]を抽出するステップの設定を変更していきます。


【4-6】ファインダーを変更する

(1)[Extract 満足度]ステップを右クリック→[ステップを設定]をクリックします。


(2)次に、[ファインダー]タブをクリックします。[ファインダー]タブの画面では、アクションの対象となるHTMLタグを設定します。

ここで、アクションの対象となるタグ、つまり「満足度としてウェブページのどの部分を抽出するかを探すタグ」は、「属性値 = “point rank5” のとき」という設定になっており、1位の満足度はアクション対象となりますが、2位、3位は対象外となってしまうことがわかります。


(3)そこで、[属性値]は[テキストで始まる]を選択して、[テキスト]は「Point rank」に変更します。

これで、満足度の抽出対象は、[属性値]が「point rank」で始まるタグとなりました。


【4-7】満足度が正しく抽出されるか確認する

では、ロボットが正常に満足度を抽出するかどうか、試してみましょう。


(1)イテレーションを1つずつ進めながら、変数・ビューに表示される[満足度]を確認していきます。

まず、1位は問題ありません。


(2)次に、2位です。さきほどまでは1位と同じ値が表示されていましたが、ファインダーを変更したことで、正しい値(ここでは「4.68」)が表示されるようになりました。


(3)次に、3位です・・・・あれっ!?エラーが出てしまいました。エラーメッセージに「入力から数値を抽出できません」とありますので、3位のデータを確認してみましょう。


(4)ブラウザ・ビューのオレンジ枠(抽出対象)を確認してみると、「-」という値になっています。これは数値ではないので、数値型の変数[満足度]には入力できません

満足度は数値ではないこともあるようなので、対策を考えなければいけませんね。


【4-8】エラー処理を変更する

満足度の値が数値型で抽出できなくても処理を続行させるためには、エラー処理を変更する必要があります。

エラー処理は、アクションステップ毎に設定することができ、初期設定ではエラーが発生するとロボットは停止します。


(1)ステップ・ビューの[エラー処理]タブをクリックします。


(2)そして、[Then]は[無視して続行]を選択します。すると、[Extract 満足度]ステップの左上に小さな「→」が表示されます。これは、無視して続行する処理を表しています。


(3)これで、満足度の抽出に失敗しても処理が続行されるようになりました。ロボット・ビューのエンドポイントをクリックしてみましょう。

変数・ビューを確認すると、[満足度]は空欄ですが、エラーは発生せずに処理が続行されました。

 ※その他の項目でも、必要に応じてエラー処理を変更してください。


【4-9】csvファイルの明細を出力する

すでにcsvファイルのヘッダーを出力するステップがありますので、ここではそのステップをコピー&貼り付けして使いたいと思います。


(1)[Write File]ステップを右クリック→[コピー]をクリックします。


(2)次に、エンドポイントを右クリック→[ステップの前に貼り付け]をクリックします。


(3)[Write File]ステップが貼り付けされたら、[アクション]タブをクリックして、[ファイルに追加]にチェックを入れます。そうすることで、既存のcsvファイルに追記することができます。

次に、[ファイルコンテンツ]の右端の四角いマークの[編集]をクリックします。


(4)次のようなダイアログが表示されますので、[ヘッダーを作成]のチェックを外します。すると、[テスト出力]にタイプ[ノートpcランキング情報]の値が表示されますので、確認してから[OK]をクリックします。


【4-10】値返却(Return Value)ステップを追加する

(1)最後に、値返却ステップを追加します。エンドポイントの手前の矢印を右クリック→[ステップを挿入]→[アクションステップ]をクリックします。


(2)次に、ステップ・ビューの[アクションを選択]をクリック→[値返却]をクリックします。


(3)ステップ名が[Return Value]に変更され、[変数]には[ノートpcランキング情報]が自動的に設定されます。

これで、ロボットは完成です。画面左上の[すべて保存]をクリックして保存してください。


【5】ロボットを実行する

(1)[デバッグ]をクリックしてから三角形のマークの[実行]をクリックして、ロボットを実行します。


(2)処理が終了したら、次のことを確認してください。

  • ステータス・ビューに、ノートパソコン売れ筋ランキング一覧の情報が表示されている。
  • csvファイルが正常に出力されている。

csvファイルの出力、ファインダーの変更とエラー処理の変更。ここで全て理解できなくても大丈夫ですが、どんな設定がどこでできるのかを知っていると便利ですよ。