スクレイピング、JavaScriptを乗り越えて
ETF、ETNのインディカティブNAV(iNAV)を取得しようとしました。JPXのサイトから。
www.tse.idmanagedsolutions.com
ETFのデータを取ってくるだけならPythonのスクレイピングで有名なBeautiful Soupすら使う必要ありません。pandas.read_html(url)でデータフレームとして取ってこれます。さすがPandas。
しかし、ETNはそうはいきません。「ETN」のボタンを押して表示されるサイトはETFの時のアドレスと同じです。JavaScriptを実行することでサイトの中身が書き換わる形式です。これをされるとBeautiful Soupだけでは対抗できません。
そこで必要になってくるのが、Seleniumと(Chromeの)WebDriver。
使い方なんかはググっていくつか見てもらった方が分かりやすいと思うんで割愛。紹介だけ。面倒くさいんで。
とにかくこの装備でETNのiNAVも無事取得できました。
初めて driver.find_element_by_id('xxx').click() を使った記念ブログ。
昨年、PyconJPに行った際にもスクレイピングの発表を聞いて、Selenium以外でもJavaScriptと闘えるって事を知ったんですが、今回思ったことはやっぱりググって出てくる情報量が違う。古参強しです。ビギナーな私はとりあえずこれからもSeleniumでJavaScriptと闘っていこうと思います。