Yahoo!ファイナンスから株式ランキングをスクレイピング
フォローするこのチュートリアルでは、Yahoo!ファイナンスから株式ランキングをスクレイピングする方法を紹介します。
英語サイトの「Yahoo Finance」の場合、Octoparseにはタスクテンプレートがあります。いくつかのパラメーターを入力するだけで、データを簡単に取得できます。タスクテンプレートの詳細をご覧ください。
このチュートリアルで次のURLを使います。
https://info.finance.yahoo.co.jp/ranking/?kd=1&mk=1&tm=d&vl=a
例として、今回はランキングの「値上がり率」にある情報を取得します。
以下はチュートリアルの主な手順です。 [タスクファイルをダウンードする]
- 1) 「Webページを開く」 - 内蔵ブラウザで対象のWebページを開く
- 2) ページ遷移のループを作る - 複数のページからデータを取得する
- 3) 「ループアイテム」を作る - 各行上のデータを取得する
- 4) データを抽出する - 抽出したいデータを選択する
- 5) 抽出タスクを始める - タスクの実行を行いデータを取得する
1) 「Webページを開く」 - 内蔵ブラウザで対象のWebページを開く
- 「カスタマイズモード」を選択し、タスクを作ります。
- URLを入力して「URLを保存する」をクリックします。
2) ページ遷移のループを作る - 複数のページからデータを取得する
ページを下にスクロールし、「次へ」ボタンをクリックし、「操作ヒント」から「選択したリンクをループクリックする]を選択します。そうすると、2番目のページに移動しました。
チェックしたところ、ページネーションのXpathが間違いました。以下のように変更する必要があります。
//ul[contains(@class,"ymuiPagingBottom")]/a[text()="次へ"]
3) 「ループアイテム」を作る - 各行上のデータを取得する
2番目のページに入ったから、よりよくデータを取得するために、1番目のページに戻るほうがいいです。「Webページを開く」をクリックすると、最初のWebページを開きます。それで「ページネーション」ループを選択し、次の操作を行います。
まず、順位の「1」をクリックすると、緑色に変わり、選択されたことを示します。残りの着順は赤色に変わり、類似した要素として識別されたことを示します。各行目のデータを行別で取得するには、「操作ヒント」でエリア拡大のボタンをクリックし、一行目のデータが全部選択されるようにします。テーブルの構造だから、ソースコードには各行のタグは「TR」です。
すべての50行を選択するために、2行目も同じように操作します。そうすると、残りのデータが自動識別され、「データを抽出する」をクリックすると、「ループアイテム」が作成されました。
4) データを抽出する - 抽出したいデータを選択する
- 必要なデータをクリックし、「操作ヒント」にある「選択した要素のテキストを抽出する」を選択します。
- 必要に応じて、フィールドを削除するか、フィールド名を編集することができます。
5) 抽出タスクを始める - タスクの実行を行いデータを取得する
- 「保存する」をクリックし、「抽出開始」をクリックします。
以下は抽出したサンプルです。