見出し画像

(米株x文系のPython) 発行済み株式総数をinvesting.comから取得する

(目的) 
investing.comから発行済み株式数を取得する。時価総額を計算し、PSRを求めるための準備。Yahoo FinanceのデータはClass Aの株式総数が載っているため、Class A+Class Bの株式総数が載っているinvesting.comからデータを取得。

(前提条件)
・Pythonをインストールしている
・コマンドプロンプトからpyファイルを呼び出せる
・BeautifulSoupをインストールしている

(アウトプット)

(やり方)
まず、Yahoo FinanceでTicker Symbolから会社名を取得し、cnameに格納。

my_moduleフォルダに入れたファイルcompanyname.py ↓

from urllib.request import urlopen
from bs4 import BeautifulSoup

def getcompanyname(x):

   url = "https://finance.yahoo.com/quote/%s" %x

   html = urlopen(url).read()
   soup = BeautifulSoup(html,'html.parser')

   title_tags = soup('title')

   for tag in title_tags:
       cnamelist = tag.text.split(',')
       cname = cnamelist[0].lower()
       cname = cname.replace(' ', '-')
       break

   return cname
from urllib.request import urlopen, Request
from bs4 import BeautifulSoup
from my_module import companyname

x = input('input Ticker symbol:')

cname = companyname.getcompanyname(x)

次に、investing.comのhtmlファイルを取得。
(普通にやると403 Errorが返ってきたので、ググってコピペして情報追加)

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.3'}
reg_url = "https://www.investing.com/equities/%s" %cname
req = Request(url=reg_url, headers=headers)
html = urlopen(req).read()

最後に、Beautiful Soupで必要なデータを取得する。spanタグを全部取得していって、タグ内にShares Outstandingを見つけたら、次のSpanタグ内のテキストを取得してbreakでforループから抜けておしまい。

soup = BeautifulSoup(html,'html.parser')

span_tags = soup('span')

for tag in span_tags:
   try:
       if tag.text == "Shares Outstanding":
           SO = tag.next_sibling.text
           break
   except:
       pass

SO = SO.replace(',','')
print(int(SO))

おしまい。

(参考にしたサイト)


ありがとうございます!すごくほくほくした気持ちになれました。

ゆう:D

1986年生まれ / シンガポール在住中

文系のPython

文系の仕事を効率化するためにPythonを扱っています。やっていることは単純作業の自動化です(ネット上にある情報をコマンドプロンプトから操作して取ってくるのが主です)。Pythonで何ができるかに重きを置いているのでコード的には似たような内容を繰り返しています。どうやってコ...
コメントを投稿するには、 ログイン または 会員登録 をする必要があります。