Finvizをスクレイピングしたらめちゃくちゃ有益に使えそうだと思ってたら、非公式ながらFinviz APIなんてものが存在するようで、Macですんなり動いたのでどう調理しようか考えています。
非公式Finviz API
Windowsで使いたい人も多いと思い久々にWindows環境を整えてみました。久々のVMwareやらParallelsやらDockerやらで時間がかかったけど、それよりWindowsでPythonやるのがこんなに面倒だとは。。忘備録として残しておきます。
Windows版Pythonのインストール手順
finviz api のインストールコマンドを実行
pip install finviz
C++ 14.0以上の環境が必要ってエラーが出ます。
エラーメッセージに従い取りに行きます。
C++が用意できたんで、finviz api のインストールコマンドを再実行
pip install finviz
なんかlxmlのセットアップでこけてる。。
バイナリがあるので、それをもらってきます。
自分の場合は環境に合わせこれを持ってきました。
lxml-4.9.0-cp311-cp311-win_amd64.whl
持ってきたものをインストール。
pip install lxml-4.9.0-cp311-cp311-win_amd64.whl
lxmlが用意できたんで、finviz api のインストールコマンドを再実行
pip install finviz
今度はきれいに完了。finvizとそれに必要なものが全部インストールできたっぽい。
簡単なテストコード(finvizapi-test.py)を用意し動作チェック
年初来高値更新銘柄をCSVに突っ込んだり、上位10社はコンソール出力できました。
from finviz.screener import Screener# Shows companies in USAfilters = ['geo_usa']# Get the valuation table with signal new high and sort it by change decendingstock_list = Screener(filters=filters, signal='ta_newhigh', table='Valuation', order='-change')# Export the screener results to .csvstock_list.to_csv("stock.csv")# Display positive divident companies on screen# Add more filtersstock_list.add(filters=['fa_div_pos']) # Show stocks with positive dividend yield# or just stock_list(filters=['fa_div_high'])for stock in stock_list[0:9]: # Loop through 1st - 10th stocksprint(stock['Ticker'], stock['Price'], stock['Change']) # Print symbol, price and change
参考にしたページ(lxmlのトラブル対応)