pythonで給料明細を自動取得#2

Seleniumの基本動作まとめ

【完全版】PythonとSeleniumでブラウザを自動操作(クローリング/スクレイピング)するチートシート | たぬハック

基本操作の一覧、わかりやすい。

これ理解してから進めたほうがいい。

 

・JSを含むselectだからうまく行かない?

seleniumでJavaScriptを含むselect要素への対応方法 - Qiita

→解決せず、、、clickableにならずにタイムアウト、、、

そもそもselectにはJS割りついてないか、、、

 

・HTMLに埋め込まれたJavaScriptはelement.click()せずに直接実行できる?

Python 3.x - [Python]seleniumでclick()ができない|teratail

clickできない問題は解決しなかったけど、ヒントになりそう、、、

HTML見ると onchange にJSが割りついている、、、

 

・onchangeって何、、、?

HTMLElement: change イベント - Web API | MDN

>>change イベントは <input><select><textarea> 要素において、ユーザーによる要素の値の変更が確定したときに発生します。

なるほど、、、onchangeにJSが割りついているってことは、要素がselectされたときに自動でJavaScriptが走るってことね。

ってことは要素のselectさえできれば直接JSたたけばイケるかも。

もっかいHTMLとにらめっこしてみる

 

・マウスオーバーとクリックの動作でclassが変わっている?

通常時

ui-btn ui-shadow ui-btn-icon-right ui-btn-up-c

マウスオーバー時

ui-btn ui-shadow ui-btn-icon-right ui-btn-hover-c

クリック後ドロップダウンリスト表示時

ui-btn ui-shadow ui-btn-icon-right ui-btn-hover-c ui-btn-up-c

→よくわからんが、classとかcss selector指定って要素を特定しきれてないんじゃないか、、、?xpathで指定してみる

 

やっと選択できた、、、!!!

でもまだselectがうまく動かない。

pythonで株探の全銘柄分のhtmlを取得

オニールのCAN-SLIM銘柄探しのためにEPS増加率データを取得したい。

成長率をスクリーニングできるものが見つからないため、株探でひとつひとつ調べるしかないかと諦めかけていたとき、このデータから自分でデータベースを作成してみようと思いつく。

スクレイピングが必要と思い調べたが、BeautifulSoupとか難しそうだし簡単にできないか調べたところ表データの取得はpandasで簡単にできそうだったのでやってみる。

 

参考)

www.youtube.com

 

うん、できそう。

f:id:bon_kabu:20210117013409p:plain

 

全銘柄のデータを取得するために、とりあえず都度株探にアクセスするのもあれなので一回株探の全銘柄のページのHTMLを手元に落とす。

参考

snowball.hatenablog.com

f:id:bon_kabu:20210117013621p:plain

銘柄コードをlist化

東証のホームページから銘柄コードのリストを取得、文字列にしてなんかよくわからん[1301]の[]を削除するために内包表現で必要データだけ抜き出ししてデータ成形。

 

f:id:bon_kabu:20210117013938p:plain

HTML取得コード

これで1秒ごとに各銘柄のHTMLデータを取得、だいたい1時間強かかるので放置。

今日はここまで。

 

ここからはCAN-SLIMのCとAを満たす銘柄探索のため、EPSの年度伸び、EPSの四半期伸びを格納する。そのために必要な表を抜き出して、四半期ごとの伸びも計算してデータフレーム化していこう。