2017-05-28 10 views
0

だから私は財政のための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? 

私は一日のためにそれにされていると私は正直にあきらめることを拒否しこれに関する助けがあれば、大いに役立つでしょう。また、誰かがピクルス以外の何かの提案をしていると、私が偉大なピックルなしで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

ヒントにエラーがあります。 'パーサーライブラリをインストールする必要がありますか? ' –

答えて

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参照ラインを変更してみてください。

+0

私はOSX上で動作しています。問題がある場合はPycharmを使用していますが、明らかにlxmlがインストールされていると言います。アンインストールして再インストールします。 – alex

+0

この男は天才ですので、うまく働いてくれてありがとう。 – alex

0

欠落しているパーサライブラリをインストールするには、コマンドラインからpip install lxmlしてみてください。

+0

は別の推奨に基づいてそれを試みましたが、それでも動作しませんでした。私は助けていただきありがとうございます。またPycharmを使用していますが、それは重要ですが、明らかにlxmlがインストールされていると言います。 – alex

+0

ここでは、_might_有用でPyCharmについては説明していますが、OSについては触れていないという話題もあります(https://stackoverflow.com/questions/30493031/installing-lxml-libxml2-libxslt-on-windows-8-1) X. – Eric