2016-07-28 5 views
3

Ich versuche beautifulsoup4 zu verwenden, um eine Reihe von Webseiten zu analysieren, die in XHTML geschrieben sind. Ich gehe davon aus, dass für beste Ergebnisse, ich mit einem XML-Parser paaren sollte, und die einzige, die von beautifulsoup nach meinem Wissen unterstützt wird, ist lxml.lxml wird nicht in Beautiful Soup gefunden

aber wenn ich versuche, die folgenden gemäß der beautifuloup Dokumentation auszuführen:

import requests 

from bs4 import BeautifulSoup 
r = requests.get(‘hereiswhereiputmyurl’) 
soup = BeautifulSoup(r.content, ‘xml’) 

es ergibt sich folgende Fehler:

FeatureNotFound: Couldn't find a tree builder with the features you  
requested: xml. Do you need to install a parser library? 

Sein mich verrückt. Ich habe Rekord von zwei anderen Benutzern gefunden, der das gleiche Problem gepostet

Hier How to re-install lxml?

und hier bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: lxml. Do you need to install a parser library?

ich diesen Beitrag verwendet (Link direkt unterhalb dieser Zeile sehen) neu zu installieren und zu aktualisieren lxml und auch aktualisierte schöne Suppe, aber ich bekomme immer noch den Fehler. Installing lxml, libxml2, libxslt on Windows 8.1

BeautifulSoup arbeitet anders, weil ich den folgenden Code lief und es stellte mich mit seiner üblichen Wand Auszeichnungssprache Suppe = BeautifulSoup (r.content, ‚html.parser‘)

Hier sind meine specs Windows-8.1 Python 3.5.2 ich das spyder ide in Anaconda 3 verwenden, um meine Code auszuführen (was zugegebenermaßen, ich weiß nicht viel über)

ich bin sicher, es ist ein messup dass ein Anfänger, weil, wie tun würde Ich habe gesagt, bevor ich sehr wenig Programmiererfahrung habe.

Wie kann ich dieses Problem lösen, oder wenn es ein bekannter Fehler ist, würden Sie mir empfehlen, dass ich einfach lxml benutze, um die Daten zu scrappen.

+1

Was passiert, wenn Sie "lxml" importieren? – DeepSpace

+0

Wie wäre es mit 'suppe = BeautifulSoup (r.content, 'lxml')'? – har07

+0

Wenn Sie xpath und or css kennen, würde ich lxml über bs4 verwenden, aber Ihr Problem ist höchstwahrscheinlich, dass Sie lxml für eine Version von python installiert haben und Sie eine andere verwenden. –

Antwort

0

Ich denke, das Problem ist r.content. Normalerweise gibt es den rohen Inhalt der Antwort, die nicht unbedingt eine HTML-Seite ist, kann es json, etc.
Versuchen, r.text zu Suppe zu füttern.

soup = BeautifulSoup(r.text, ‘lxml’) 

Besser:

r.encoding='utf-8' 

dann

page = r.text 

soup = BeautifulSoup(page, 'lxml') 

wenn Sie xml zu analysieren gehen Sie 'lxml-xml' als Parser verwenden können.

Verwandte Themen