2017-05-28 5 views
0

So verwende ich diese series auf Python für Finanzen und es hält was mir Fehler -Automatisieren der S & P-500-Liste immer

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? 

Ich habe einen ganzen Tag lang an ihm gewesen, und ich ehrlich aufgeben verweigern und jede Hilfe mit diesem würde sehr appelliert werden. Auch wenn jemand irgendwelche Vorschläge für etwas anderes als Gurke hat und mir helfen kann, etwas zu schreiben, das mir erlaubt, den SP500 ohne Gurke zu nennen, wäre das großartig.

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

Hinweis liegt im Fehler. 'Müssen Sie eine Parser-Bibliothek installieren?' –

Antwort

2

Die Ausführung Ihres Codes läuft auf meinem System. Wahrscheinlich, wie Eric vorschlägt, sollten Sie lxml installieren.

Leider unter Windows pip install lxml funktioniert nicht, wenn Sie eine ganze Compiler-Infrastruktur eingerichtet haben, die Sie wahrscheinlich nicht tun.

Zum Glück können Sie einen vorkompilierten binären Installer von http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml erhalten - stellen Sie sicher, dass Sie den auswählen, der Ihrer Version von Python entspricht und ob es 32 oder 64 Bit ist.

Edit: nur für Zinsen, versuchen, die Linie zu ändern

soup = bs.BeautifulSoup(resp.text, 'html.parser') # use Python's built-in parser instead 

Siehe https://www.crummy.com/software/BeautifulSoup/bs4/doc/#installing-a-parser für eine Liste der verfügbaren Parser.

+0

Ich laufe auf OSX Ich benutze Pycharm, wenn das wichtig ist, aber es sagt klar, dass lxml installiert ist, ich deinstalliert und neu installiert. – alex

+0

dieser mann ist ein genius danke so viel hugh es hat funktioniert. – alex

0

pip install lxml von einer Befehlszeile versuchen, die fehlenden Parser-Bibliothek zu installieren.

+0

versuchte, dass basierend auf einer anderen Empfehlung, aber es hat immer noch nicht funktioniert. Ich schätze die Hilfe., Auch ich benutze Pycharm, wenn das wichtig ist, aber es sagt klar, dass lxml installiert ist. – alex

+0

Es gibt eine Diskussion [hier] (https://stackoverflow.com/questions/30493031/installing-lxml-libxml2-libxslt-on-windows-8-1), die _might_ nützlich sein könnte, es spricht über PyCharm, aber nicht OS X. – Eric