自动获得S& P 500列表

时间:2017-05-28 22:23:51

标签: python python-3.x python-requests finance bs4

所以我在Python for Finance上使用这个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?

我已经待了一整天了,老实说,我拒绝放弃,任何对此的帮助都会有很大的帮助。此外,如果任何人有任何建议除泡菜以外的东西,并可以帮助写一些东西,允许我拨打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()

2 个答案:

答案 0 :(得分:2)

按原样运行代码在我的系统上运行。也许正如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

答案 1 :(得分:0)

从命令行尝试pip install lxml以安装缺少的解析器库。