Elsaの技術日記(徒然なるままに)

主に自分で作ったアプリとかの報告・日記を記載

MENU

一部上場企業の住所を元にMap上にプロットしてみた

先日ご紹介しました通り、foliumを用いることで緯度・経度情報をMapにプロットが行えます。
elsammit-beginnerblg.hatenablog.com

緯度・経度は無料のAPIを用いれば住所から取得できます。
elsammit-beginnerblg.hatenablog.com

これらの手段を用いて、
東証一部上場企業の住所からMap上にプロットしてみました!!
世間では東京一極集中という話を聞きますがどうなのでしょうか?



東証一部上場企業リスト

今回はこちらのサイトに掲載されていた会社名リストを用いることにしました。
http://www.kabu-data.info/all_code/code_tosyo1_code.htm

また、会社毎の住所はyahooファイナンスの会社概要欄を利用して取得しました。

■使用言語

今回使用する言語は例のごとくPythonになります。
Pythonのバージョンですが、
Python 3.7.3
です。

■会社名から住所情報を取得

先ほど述べた通り、会社名からyahooファイナンスを住所情報を取得します。
数が多いのでスクレイピングで取得していくことにしました。
コードはこちら。

def SearchAddress(CodeNum):
    url = "https://profile.yahoo.co.jp/fundamental/"+str(CodeNum)
    html = urllib.request.urlopen(url.replace("\ufeff", ""))
    soup = BeautifulSoup(html, "html.parser")
    items = soup.select('div.profile > div > div > table > tr > td > table > tr > td')
    Address = items[5].text
    return Address.split()[1]

先ほどの
http://www.kabu-data.info/all_code/code_tosyo1_code.htm
には会社名と合わせてコードも記載されておりましたので、こちらのコードを引数に用いています。
スクレイピングを用いるにあたり、BeautifulSoupを用いました。
html内の住所欄までの構造は、
id="profile"から、、、
div ⇒ div ⇒ table ⇒ tr ⇒ td ⇒ table ⇒ tr ⇒ td
のテーブル構造の5段目に位置していましたので、

items = soup.select('div.profile > div > div > table > tr > td > table > tr > td')
Address = items[5].text
return Address.split()[1]

としました。

こちらを実行することにより、会社名(コード)から住所が取得できます。
本社しか取得できないので少し不十分な気もしますが、、、
まぁ、試しに行ってみる分にはOK!!

負荷をかけないように少し時間を空けながら実行しましょう!!

■全体コードの紹介
会社名(コード)からMap上にプロットする際に用いたソースコードはこちらに格納しておりますので、
よろしければご参照ください。

■実行結果

結果はこんな感じになりました。
f:id:Elsammit:20210729224733p:plain
f:id:Elsammit:20210729224754p:plain
f:id:Elsammit:20210729224807p:plain

確かに東京付近が多いですが、他の地域にも点在していますね。
東海道線近辺は企業が多いですね。
後は大阪近辺もやはり多い!!
北関東より北が少し寂しい感じでしょうか。。

■最後に

今回は今まで学んだ知識を元に少し遊んでみました!!
興味があったことなので実行出来て良かった!!
他にも地図上にプロットする技術は遊びで色々使えそうだな。
また思いついたら使ってみたいと思います。