見出し画像

(文系のPython) Yahoo Financeから時価総額を取得。ティッカーシンボルを次々と入力し、入力した分の会社の情報を取得。

(目的)
こういうちょっとした情報をさくっと取れるようにしとくと便利です。特にiPhoneでやれると便利です。

(アウトプット)
こんな感じ。

iphoneでやるとこんな感じ。

(前提条件)
・Pythonをインストールしている
・コマンドプロンプトからpyファイルを呼び出せる
・BeautifulSoupをインストールしている
・iPhoneアプリPythonistaを購入している(iPhoneで実行する場合のみ)

(やり方)
空のリストlstを作り、While Trueの無限ループで延々とTicker symbolのインプットを促す。インプットされたTicker Symbolはリストlstに追加される。"done"と入力したらループから抜け出す。

lst = []
while True:
    x = input('input Ticker symbol (input \"done\" when you finish):')
    if x == ("done"):
        break
    lst.append(x)

作ったリストlstでループを回す。
ループ内でティッカーに応じたページに飛び、tdタグを取得し、tdタグのテキストがMarket Cap (intraday) の次に会った数字を取得してMarketCapという変数に入れ、そのままprint。

for x in lst:
    url = "https://finance.yahoo.com/quote/%s/key-statistics" %x
    html = urlopen(url).read()
    soup = BeautifulSoup(html,'html.parser')
    td_tags = soup('td')

    for tag in td_tags:
        try:
            if tag.span.text == "Market Cap (intraday)":
                MarketCap = tag.next_sibling.text
                print(x,":", " " * (11-len(MarketCap)-len(x)), MarketCap)
        except:
            pass

おしまい。

コード全文。

from urllib.request import urlopen
from bs4 import BeautifulSoup
#import re

lst = []
while True:
    x = input('input Ticker symbol (input \"done\" when you finish):')
    if x == ("done"):
        break
    lst.append(x)

print("")

for x in lst:
    url = "https://finance.yahoo.com/quote/%s/key-statistics" %x
    html = urlopen(url).read()
    soup = BeautifulSoup(html,'html.parser')
    td_tags = soup('td')

    for tag in td_tags:
        try:
            if tag.span.text == "Market Cap (intraday)":
                MarketCap = tag.next_sibling.text
                print(x,":", " " * (11-len(MarketCap)-len(x)), MarketCap)
        except:
            pass


ありがとうございます!褒められるって、うれしいですね。
1986年生まれ / シンガポール在住中
コメントを投稿するには、 ログイン または 会員登録 をする必要があります。