435 Stimmen

Bs4.FeatureNotFound: Es konnte kein Baumeigenschaftssucher mit den von Ihnen angeforderten Funktionen gefunden werden: lxml. Müssen Sie eine Parser-Bibliothek installieren?

...
soup = BeautifulSoup(html, "lxml")
Datei "/Library/Python/2.7/site-packages/bs4/__init__.py", Zeile 152, in __init__
% ",".join(features))
bs4.FeatureNotFound: Konnte keinen Baumersteller mit den angeforderten Funktionen finden: lxml. Müssen Sie eine Parser-Bibliothek installieren?

Die oben genannte Ausgabe erscheint auf meinem Terminal. Ich benutze Mac OS 10.7.x. Ich habe Python 2.7.1 und bin diesem Tutorial gefolgt, um Beautiful Soup und lxml zu installieren, die beide erfolgreich installiert wurden und mit einer separaten Testdatei hier gefunden werden können. Im Python-Skript, das diesen Fehler verursacht, habe ich folgende Zeile eingefügt: from pageCrawler import comparePages Und in der Datei pageCrawler habe ich die folgenden beiden Zeilen eingefügt: from bs4 import BeautifulSoup from urllib2 import urlopen

Wie kann dieses Problem gelöst werden?

5voto

blizz Punkte 3919

In meinem Fall hatte ich eine veraltete Version des lxml-Pakets. Also habe ich es einfach aktualisiert und das hat das Problem behoben.

sudo python3 -m pip install lxml --upgrade

3voto

Qiao Yang Punkte 39

Ich bin auf das gleiche Problem gestoßen. Ich fand heraus, dass der Grund dafür war, dass ich ein leicht veraltetes Python-Six-Paket hatte.

>>> import html5lib
Traceback (most recent call last):
File "", line 1, in 
  File "/usr/local/lib/python2.7/site-packages/html5lib/__init__.py", line 16, in 
    from .html5parser import HTMLParser, parse, parseFragment
  File "/usr/local/lib/python2.7/site-packages/html5lib/html5parser.py", line 2, in 
    from six import with_metaclass, viewkeys, PY3
ImportError: cannot import name viewkeys

Das Aktualisieren Ihres Six-Pakets wird das Problem lösen:

sudo pip install six=1.10.0

2voto

ayan-cs Punkte 41

BS4 erwartet standardmäßig ein HTML-Dokument. Daher analysiert es ein XML-Dokument als ein HTML-Dokument. Übergeben Sie features="xml" als Argument im Konstruktor. Es hat mein Problem gelöst.

1voto

In einigen Verweisen verwenden Sie anstelle des ersten den zweiten:

soup_object= BeautifulSoup(markup,'html-parser')
soup_object= BeautifulSoup(markup,'html.parser')

1voto

Pranav Bhendawade Punkte 273

Der Fehler tritt auf, weil der Parser, den Sie verwenden. normalerweise, wenn Sie eine HTML-Datei/einen HTML-Code haben, müssen Sie html5lib verwenden (Dokumentation finden Sie hier) und falls Sie eine XML-Datei/-daten haben, müssen Sie lxml verwenden (Dokumentation finden Sie hier). Sie können auch lxml für HTML-Datei/-code verwenden, aber manchmal tritt der oben genannte Fehler auf. Daher ist es besser, das Paket entsprechend der Art der Daten/Datei weise zu wählen. Sie können auch html_parser verwenden, das ein eingebautes Modul ist. Dies funktioniert jedoch manchmal auch nicht.

Weitere Details dazu, wann welches Paket verwendet werden sollte, finden Sie unter hier

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X