import logging
import pandas as pd
from selenium import webdriver
from time import sleep
def find_stock(stock_number=4816):
driver=webdriver.Chrome(r"C:\driver\chromedriver_win32\chromedriver.exe") #ウェブドライバを読み込む
# 株式番号を入力して、キー レーションの一覧を表示する
url=r"https://www.morningstar.com/stocks/XTKS/"+str(stock_number)+r"/quote.html"
driver.get(url)
sleep(3)
print("ブラウザを開きました")
# 現在の株価を取得する
xpath_price=r'//*[@id="message-box-price"]'
price=driver.find_element_by_xpath(xpath_price).text
# \ と カンマを削除してfloat化する
print(price)
price=price.replace(chr(165),"") .replace(".00","").replace(",","")
price=float(price)
print(price)
#キーレーションタブを押す
xpath_key_rations=r'//*[@id="sal-components-quote"]/div[2]/div/div/div/div[2]/div[1]/div/ul/li[3]/a'
tub_key_rations=driver.find_element_by_xpath(xpath_key_rations)
tub_key_rations.click()
sleep(2)
print("キーレーション タブを押しました")
#フルキータブを押す
xpath_full_key=r'//*[@id="sal-components-quote"]/div[2]/div/div/div/div[2]/div[2]/div/div[2]/div/a'
tub_full_key_rations=driver.find_element_by_xpath(xpath_full_key)
tub_full_key_rations.click()
sleep(1)
print("フルキータブを押しました")
# アクティブなURLを切り替える
print(driver.current_url) # 現在アクティブなURLを確認する
driver.switch_to.window(driver.window_handles[1]) # アクティブなURLを切り替える
sleep(2)
print(driver.current_url) # URLが切り替わっていることを確認する
# --------------------------------------------------------------------------------------------
# Earnings Per Share を取得
xpath_eps=r'//*[@id="i5"]'
key_eps=driver.find_element_by_xpath(xpath_eps).text
eps=[]
for i in range(1,12):
xpath_eps=r'//*[@id="financials"]/table/tbody/tr[12]/td['+str(i)+']'
#eps.append(float(driver.find_element_by_xpath(xpath_eps).text))
print(float(driver.find_element_by_xpath(xpath_eps).text))
print(type([float(driver.find_element_by_xpath(xpath_eps).text)]))
eps.append([float(driver.find_element_by_xpath(xpath_eps).text)])
eps={key_eps:eps}
sleep(1)
sleep(1)
print(eps)
# Dividends を取得
xpath_dividends=r'//*[@id="i6"]'
key_dividends=driver.find_element_by_xpath(xpath_dividends).text
dividends=[]
dividends+=[None]
for i in range(2,12):
xpath_dividends=r'//*[@id="financials"]/table/tbody/tr[14]/td['+str(i)+']'
dividends+=[float(driver.find_element_by_xpath(xpath_dividends).text)]
dividends={key_dividends:dividends}
sleep(1)
print(dividends)
# Book Value Per Share を取得
xpath_book=r'//*[@id="i8"]'
key_book=driver.find_element_by_xpath(xpath_book).text
book=[]
for i in range(1,12):
xpath_book=r'//*[@id="financials"]/table/tbody/tr[20]/td['+str(i)+']'
book+=[float(driver.find_element_by_xpath(xpath_book).text)]
book={key_book:book}
sleep(1)
print(book)
# Return on Equity % を取得
# Key Rationsタブを Profitability に切り替える
xpath_growth=r'//*[@id="keyStatWrap"]/div/ul/li[1]/a'
tub_growth=driver.find_element_by_xpath(xpath_growth)
tub_growth.click()
#sleep(0.1)
print("Profitabilityタブへ切り替え完了")
xpath_roe=r'//*[@id="i26"]'
key_roe=driver.find_element_by_xpath(xpath_roe).text
roe=[]
for i in range(1,12):
xpath_roe=r'//*[@id="tab-profitability"]/table[2]/tbody/tr[12]/td['+str(i)+']'
roe+=[driver.find_element_by_xpath(xpath_roe).text]
roe={key_roe:roe}
sleep(1)
print(roe)
# Key Rationsタブを Growth に切り替える
xpath_growth=r'//*[@id="keyStatWrap"]/div/ul/li[2]/a'
tub_growth=driver.find_element_by_xpath(xpath_growth)
tub_growth.click()
sleep(1)
print("Growthタブへ切り替え完了")
# EPS % を取得
xpath_eps_pct=r'//*[@id="gr-eps"]'
key_eps_pct=driver.find_element_by_xpath(xpath_eps_pct).text
eps_pct=[]
xpath_eps_pct_yoy=r'//*[@id="tab-growth"]/table/tbody/tr[34]/td[10]'
xpath_eps_pct_3y=r'//*[@id="tab-growth"]/table/tbody/tr[36]/td[10]'
xpath_eps_pct_5y=r'//*[@id="tab-growth"]/table/tbody/tr[38]/td[10]'
xpath_eps_pct_10y=r'//*[@id="tab-growth"]/table/tbody/tr[40]/td[10]'
eps_pct.append(float(driver.find_element_by_xpath(xpath_eps_pct_yoy).text))
eps_pct.append(float(driver.find_element_by_xpath(xpath_eps_pct_3y).text))
eps_pct.append(float(driver.find_element_by_xpath(xpath_eps_pct_5y).text))
eps_pct.append(float(driver.find_element_by_xpath(xpath_eps_pct_10y).text))
eps_pct={key_eps_pct:eps_pct}
sleep(1)
print(eps_pct)
# データフレームを作成 : pd.concatでどんどんつなげていく。
# 軸を指定して、自動ソートを無効にする。: axis=1
df=pd.concat([pd.DataFrame(eps), pd.DataFrame(dividends), pd.DataFrame(book), pd.DataFrame(roe), pd.DataFrame(eps_pct)], axis=1)
print(df)
stock_price=3425
as_asset=False
as_dividends=False
as_growths=False
df.keys()
"""
Index(['Earnings Per Share JPY', 'Dividends JPY', 'Book Value Per Share * JPY',
'Return on Equity %', 'EPS %'],
dtype='object')
"""
print("現在の株価 : ",price)
#(1)assets:ずっと持ち続ける資産株として
# 直近のTTMに注目する
book_value_per_share_ttm=book_value_per_share_ttm=df['Book Value Per Share * JPY'][len(df['Book Value Per Share * JPY'])-1]
entry_1=book_value_per_share_ttm*0.8
review_1=book_value_per_share_ttm*1.0
if price<=entry_1:
as_asset=True
print("資産株として 買い判定:{} エントリー価格 :{:.0f} レビュー価格:{:.0f}".format(as_asset,entry_1,review_1))
#(2)devidents:配当用の株として
# 欲しい利回り日本株6%(米国株7%) 欲しい配当率 Yw 0.0
# Devidents / yield_target
dividends_ttm=df['Dividends JPY'][len(df['Dividends JPY'])-1]
yield_target=0.06 # 固定値
entry_2=dividends_ttm/yield_target
review_2=entry_2*1.5 # 単純に1.5倍
if price<=entry_2:
as_dividends=True
print("配当株として 買い判定:{} エントリー価格 :{:.0f} レビュー価格:{:.0f}".format(as_dividends,entry_2,review_2))
#(3)growths:成長株として
eps_ttm=df['Earnings Per Share JPY'][len(df['Earnings Per Share JPY'])-1]
eps_pct=df['EPS %'].min()
entry_3=eps_ttm*eps_pct
review_3=entry_3*1.2 # 単純に1.2倍
if price<=entry_3:
as_growths=True
print("成長株として 買い判定:{} エントリー価格 :{:.0f} レビュー価格:{:.0f}".format(as_growths,entry_3,review_3))
print("証券NO. : ",stock_number)
print("現在の株価 : ",int(price))
print("資産株として 買い判定:{} エントリー価格 :{:.0f} レビュー価格:{:.0f}".format(as_asset,entry_1,review_1))
print("配当株として 買い判定:{} エントリー価格 :{:.0f} レビュー価格:{:.0f}".format(as_dividends,entry_2,review_2))
print("成長株として 買い判定:{} エントリー価格 :{:.0f} レビュー価格:{:.0f}".format(as_growths,entry_3,review_3))
return "完了"