jsoupを使って日本の高配当銘柄のデータを取得する

この記事でやること

Javaのライブラリであるjsoupを使ってYahooファイナンスの配当利回りランキングの上位の銘柄コードを取得。その後各銘柄のデータをIR BANKから取得するためのURLを表示します。なお開発はIntelliJ IDEAを使って行いました。

IntteliJ IDEA でjsoupを使えるようにするためにはこちらの記事を読んでください。

最終的なプログラムコード

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.SplittableRandom;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;


public class Main {
    public static void main(String[] args) {
        try {
            // jsoup を使ってヤフーファイナンスの配当利回りランキングにアクセス
            Document doc = Jsoup.connect("https://info.finance.yahoo.co.jp/ranking/?kd=8").get();

            Elements elements = doc.getElementsByClass("rankingTabledata");

            List<String> el_list = new ArrayList<String>();

            // el_listに配当ランキングを格納
            for (Element el : elements) {
                el_list.add(el.text());
            }

            
            String [][] ranking = new String[el_list.size()][10];
            List<String> ranking_meigara_code = new ArrayList<>();
            int count = 0;
            int count2 = 0;
            for (String el: el_list){
                for (String mojiretu: el.split(" ", 0)){
                    ranking[count][count2] = mojiretu;
                    count2++;
                }
                ranking_meigara_code.add(ranking[count][1]);
                count2=0;
                count++;
            }


            for (String rmc: ranking_meigara_code){
                System.out.println("https://f.irbank.net/files/" + rmc + "/fy-data-all.csv");
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

順番に一つずつ解説していきます。

Yahoo!ファイナンスへリクエストを送る

ここがYahoo!ファイナンスの配当利回りランキングです。GoogleChromの検証ツールを使ってみるとrankingTabledataというClassが表の一行を表していることがわかります。ここからデータを取得して最終的には4桁の銘柄コードだけにすることを目指します。

jsoupを使って配当利回りランキングにリクエストを送りel_listにそれぞれ株の情報を格納します。

// jsoup を使ってヤフーファイナンスの配当利回りランキングにアクセス
Document doc = Jsoup.connect("https://info.finance.yahoo.co.jp/ranking/?kd=8").get();

// elements に株の情報を入れる。
Elements elements = doc.getElementsByClass("rankingTabledata");

//株の情報をListを使って管理するためのel_listを作成
List<String> el_list = new ArrayList<String>();

// el_listに配当ランキングを格納
for (Element el : elements) {
    el_list.add(el.text());
}

 



取得したランキング情報を銘柄コードだけにする

そこからさらに銘柄コードだけを保持したListであるranking_meigara_codeを作成します。

String[][] ranking = new String[el_list.size()][10];
List<String> ranking_meigara_code = new ArrayList<>();
int count = 0;
int count2 = 0;
for (String el: el_list){
    for (String mojiretu: el.split(" ", 0)){
        ranking[count][count2] = mojiretu;
        count2++;
    }
    ranking_meigara_code.add(ranking[count][1]);
    count2=0;
    count++;
}

このプログラムによってranking_meigara_codeには配当利回りランキングの上位50社の銘柄コードが格納されることになりました。

IR BANKのURLを表示

IR BANKというサイトに企業のデータが入力されたCSVファイルがあります。https://f.irbank.net/files/0000/fy-data-all.csvこれの0000のところを各企業の銘柄コードに変えてリクエストを送るとその企業のデータが入ったCSVファイルを獲得することができます。先ほど作成したranking_meigara_codeには配当ランキング上位の会社の銘柄コードが格納されているのでこれと合わせて出力をすると配当利回りの高い企業のデータを一気に集めることができます。

for (String rmc: ranking_meigara_code){
    System.out.println("https://f.irbank.net/files/" + rmc + "/fy-data-all.csv");
}

これによって配当利回りランキング上位銘柄のデータが入ったCSVファイルを獲得できるURLが一覧表示されるのでここからCSVファイルを取得して投資すべき会社を見つけることができます。

コメント

タイトルとURLをコピーしました