自动获取标准普尔 500 指数名单
Automating getting the S&P 500 list
所以我在 Python 上使用这个 series 用于财务,它一直给我错误 --
1) line 22, in <module> save_sp500_tickers() and
2) line 8, in save_sp500_tickers
soup = bs.BeautifulSoup(resp.text,'lxml')and
3) line 165, in __init__
% ",".join(features))
bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: lxml.
Do you need to install a parser library?
我已经做了一整天了,老实说我拒绝放弃,如果有任何帮助,我将不胜感激。另外,如果有人对 pickle 以外的东西有任何建议,并且可以帮助写一些让我可以在没有 pickle 的情况下调用 SP500 的东西,那就太好了。
import bs4 as bs
import pickle
import requests
import lxml
def save_sp500_tickers():
resp = requests.get('https://en.wikipedia.org/wiki/List_of_S%26P_500_companies')
soup = bs.BeautifulSoup(resp.text,'lxml')
table = soup.find('table', {'class': 'wikitable sortable'})
tickers = []
for row in table.findAll('tr')[1:]:
ticker = row.findAll('td')[0].text
tickers.append(ticker)
with open("sp500tickers.pickle", "wb") as f:
pickle.dump(tickers, f)
print(tickers)
return tickers
save_sp500_tickers()
运行 您的代码按原样在我的系统上运行。可能,正如 Eric 所建议的,您应该安装 lxml。
不幸的是,如果您使用 Windows,除非您设置了完整的编译器基础结构,否则 pip install lxml
将不起作用。
幸运的是,您可以从 http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml 获得预编译的二进制安装程序 - 确保选择与您的 python 版本相匹配的安装程序,无论它是 32 位还是 64 位。
编辑: 仅供参考,尝试更改行
soup = bs.BeautifulSoup(resp.text, 'html.parser') # use Python's built-in parser instead
有关可用解析器的列表,请参阅 https://www.crummy.com/software/BeautifulSoup/bs4/doc/#installing-a-parser。
所以我在 Python 上使用这个 series 用于财务,它一直给我错误 --
1) line 22, in <module> save_sp500_tickers() and
2) line 8, in save_sp500_tickers
soup = bs.BeautifulSoup(resp.text,'lxml')and
3) line 165, in __init__
% ",".join(features))
bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: lxml.
Do you need to install a parser library?
我已经做了一整天了,老实说我拒绝放弃,如果有任何帮助,我将不胜感激。另外,如果有人对 pickle 以外的东西有任何建议,并且可以帮助写一些让我可以在没有 pickle 的情况下调用 SP500 的东西,那就太好了。
import bs4 as bs
import pickle
import requests
import lxml
def save_sp500_tickers():
resp = requests.get('https://en.wikipedia.org/wiki/List_of_S%26P_500_companies')
soup = bs.BeautifulSoup(resp.text,'lxml')
table = soup.find('table', {'class': 'wikitable sortable'})
tickers = []
for row in table.findAll('tr')[1:]:
ticker = row.findAll('td')[0].text
tickers.append(ticker)
with open("sp500tickers.pickle", "wb") as f:
pickle.dump(tickers, f)
print(tickers)
return tickers
save_sp500_tickers()
运行 您的代码按原样在我的系统上运行。可能,正如 Eric 所建议的,您应该安装 lxml。
不幸的是,如果您使用 Windows,除非您设置了完整的编译器基础结构,否则 pip install lxml
将不起作用。
幸运的是,您可以从 http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml 获得预编译的二进制安装程序 - 确保选择与您的 python 版本相匹配的安装程序,无论它是 32 位还是 64 位。
编辑: 仅供参考,尝试更改行
soup = bs.BeautifulSoup(resp.text, 'html.parser') # use Python's built-in parser instead
有关可用解析器的列表,请参阅 https://www.crummy.com/software/BeautifulSoup/bs4/doc/#installing-a-parser。