我正在尝试为所有股票获取一些特定的金融关键统计数据,并将它们存储在.csv文件中,每行中的股票和相应列中的关键统计数据。
到目前为止,我已将我的代码工作以将其保存在数据框中并结合添加手动股票代码符号。但是......有些事情没有用:
代码需要以每个页面自动删除每个库存的方式工作。所以需要使用所有可用的库存
有时会发生连接错误,最终会导致程序停止。发生这种情况时,应在退出脚本之前将现有库存数据保存到PKL文件中。当重新运行脚本时,我需要选择重新加载这些数据,然后从程序停止的位置重新启动,然后通过回答y / n问题来中断。
到目前为止我的代码:
import pandas as pd
from bs4 import BeautifulSoup as bs
import requests
def get_fundamental_data(df):
for symbol in df.index:
try:
url = ("http://finviz.com/quote.ashx?t=" + symbol.lower())
soup = bs(requests.get(url).content, features='html5lib')
for m in df.columns:
df.loc[symbol,m] = fundamental_metric(soup,m)
except Exception as e:
print (symbol, 'not found')
return df
def fundamental_metric(soup, metric):
return soup.find(text = metric).find_next(class_='snapshot-td2').text
stock_list = ['AMZN','GOOG','PG','KO','IBM']
metric = ['P/B',
'P/E',
'Forward P/E',
'PEG',
'Debt/Eq',
'EPS (ttm)',
'Dividend %',
'ROE',
'ROI',
'EPS Q/Q',
'Insider Own'
]
df = pd.DataFrame(index=stock_list,columns=metric)
df = get_fundamental_data(df)