Google Code Prettify

2022年11月24日木曜日

Finviz API をWindowsで使おうとしてはまった件

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社はコンソール出力できました。


finvizapi-test.py
from finviz.screener import Screener

# Shows companies in USA
filters = ['geo_usa']
# Get the valuation table with signal new high and sort it by change decending
stock_list = Screener(filters=filters, signal='ta_newhigh', table='Valuation', order='-change')

# Export the screener results to .csv
stock_list.to_csv("stock.csv")

# Display positive divident companies on screen
# Add more filters
stock_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 stocks
    print(stock['Ticker'], stock['Price'], stock['Change']) # Print symbol, price and change



参考にしたページ(lxmlのトラブル対応)