Delightful Soup ist eine Python-Bibliothek zum Herausziehen von Informationen aus HTML- und XML-Datensätzen. Sie arbeitet mit Ihrem bevorzugten Parser zusammen, um informelle Methoden zum Untersuchen, Suchen und Ändern des Parse-Baums bereitzustellen. Sie erspart Software-Ingenieuren regelmäßig Stunden oder lange Arbeitszeiten.

Diese Richtlinien stellen jedes einzelne signifikante Element von Excellent Soup 4 mit Modellen dar. Ich gebe Ihnen, wofür die Bibliothek nützlich ist, wie sie funktioniert, wie Sie sie nutzen können, wie Sie sie dazu bringen können, das zu tun, was Sie brauchen, und was zu tun ist, wenn sie Ihren Wünschen schadet.

Die Modelle in dieser Dokumentation sollten in Python 2.7 und Python 3.2 auf ähnliche Weise funktionieren.

Vielleicht suchen Sie die Dokumentation zu Lovely Soup 3. Unter der Voraussetzung, dass dies zutrifft, sollten Sie sich bewusst sein, dass Lovely Soup 3 nie wieder hergestellt wird und dass Excellent Soup 4 für jedes einzelne neue Projekt vorgeschrieben ist. Für den Fall, dass Sie sich über die Kontraste zwischen Excellent Soup 3 und Wonderful Soup 4 informieren müssen, siehe Portierungscode nach BS4.

Diese Dokumentation wurde von Kunden von Wonderful Soup in verschiedene Dialekte umgewandelt:

Dieses Dokument ist natürlich auch auf Chinesisch erhältlich.

Diese Seite ist in Japanisch verfügbar (externer Link)

이 문서는 한국어 번역도 가능합니다. (외부 링크)

ein HTML-Dokument, das in diesem Dokument als Beispiel verwendet wird. Es ist Teil einer Geschichte aus Alice im Wunderland:

html_doc = “”””

< html><<Kopf><Titel>>Die Geschichte der Haselmaus</title></Kopf>

< Körper>

< p class=”title”><b>Die Geschichte der Haselmaus</b></p>

< p class=”story”>Es waren einmal drei kleine Schwestern; und ihre Namen waren

< a href=”http://example.com/elsie” class=”sister” id=”link1″>Elsie</a>,

< a href=”http://example.com/lacie” class=”sister” id=”link2″> Lacie</a> und

< a href=”http://example.com/tillie” class=”sister” id=”link3″>Tillie</a>;

und sie lebten auf dem Grund eines Brunnens.</p>

< p class=”story”>…</p>…</p>

“””

Wenn wir das “Drei-Schwestern”-Dokument durch Beautiful Soup laufen lassen, erhalten wir ein BeautifulSoup-Objekt, das das Dokument als eine verschachtelte Datenstruktur darstellt:

von bs4 import BeautifulSoup

soup = SchöneSuppe(html_doc, ‘html.parser’)

drucken(suppe.prettify())

# < html>

< Kopf>

< Titel>

# Die Geschichte der Haselmaus

</title>

</Kopf>

< Körper>

# < p class=”title”>

#    < b>

# Die Geschichte der Haselmaus

#    </b>

#   </p>

# < p class=”story”>

# Es waren einmal drei kleine Schwestern, und ihre Namen waren

# < a class=”sister” href=”http://example.com/elsie” id=”link1″>

~ Elsie ~

#    </a>

#    ,

# < a class=”sister” href=”http://example.com/lacie” id=”link2″>

~ Lacie ~

#    </a>

# und

# < a class=”sister” href=”http://example.com/tillie” id=”link2″>

~ Tillie ~

#    </a>

# ; und sie lebten auf dem Grund eines Brunnens.

#   </p>

# < p class=”story”>

#    …

#   </p>

# </body>

</html>

Hier sind einige einfache Möglichkeiten, durch diese Datenstruktur zu navigieren:

suppe.titel

< title>Die Geschichte der Haselmaus</title>

suppe.titel.name

~ u’title’ ~

suppe.titel.zeichenkette

~ u’Die Geschichte der Haselmaus ~

suppe.titel.eltern.name

~ u’head’ ~

Suppe.p

# < p class=”title”><b>Die Geschichte der Haselmaus</b></p>

suppe.p[‘klasse’]

~ u’title’ ~

suppe.a

# < a class=”sister” href=”http://example.com/elsie” id=”link1″>Elsie</a>

suppe.find_alle(‘a’)

# [< a class=”sister” href=”http://example.com/elsie” id=”link1″>Elsie</a>,

# < a class=”sister” href=”http://example.com/lacie” id=”link2″> Lacie</a>,

# < a class=”sister” href=”http://example.com/tillie” id=”link3″>Tillie</a>]

suppe.find(id=”link3″)

# < a class=”sister” href=”http://example.com/tillie” id=”link3″>Tillie</a>

Eine häufige Aufgabe ist das Extrahieren aller URLs, die innerhalb der <a>-Tags einer Seite gefunden werden:

für Link in soup.find_all(‘a’):

    drucken(link.get(‘href’))

# http://example.com/elsie

# http://example.com/lacie

# http://example.com/tillie

Eine weitere häufige Aufgabe ist das Extrahieren des gesamten Textes von einer Seite:

drucken(suppe.get_text())

# Die Geschichte der Haselmaus

#

# Die Geschichte der Haselmaus

#

# Es waren einmal drei kleine Schwestern, und ihre Namen waren

# Elsie,

# Lacie und

# Tillie;

# und sie lebten auf dem Grund eines Brunnens.

#

# …

Schöne Suppe installieren

Wenn Sie eine laufende Form von Debian- oder Ubuntu-Linux verwenden, können Sie Delightful Soup mit dem Systempaketmanager einführen:

$ in der Lage bekommen Einführung python-bs4 (für Python 2)

$ adept get introduce python3-bs4 (für Python 3)

Wonderful Soup 4 wird über PyPi verteilt. Falls Sie es also nicht mit dem System-Packager einführen können, können Sie es mit easy_install oder pip einführen. Der Bundle-Name ist beautifulsoup4, und ein ähnliches Bundle befasst sich mit Python 2 und Python 3. Stellen Sie sicher, dass Sie die korrekte Wiedergabe von pip oder easy_install für Ihr Python-Formular verwenden (diese könnten pip3 und easy_install3 separat genannt werden, falls Sie Python 3 verwenden).

$ easy_install beautifulsoup4

$ pip führen beautifulsoup4 ein

(Das BeautifulSoup-Bündel ist höchstwahrscheinlich nicht das, was Sie brauchen. Das ist die letzte bedeutende Entladung, Excellent Soup 3. Eine Menge Programmierung nutzt BS3, also ist es noch zugänglich, aber falls Sie neuen Code komponieren, sollten Sie Beautifulsoup4 einführen).

Für den unwahrscheinlichen Fall, dass Sie easy_install oder pip nicht eingeführt haben, können Sie den Delightful Soup 4 Quellcode-Tarball herunterladen und mit setup.py einführen.

$ python setup.py einführen

Als letztes Mittel ermöglicht Ihnen die Genehmigung für Delightful Soup, die gesamte Bibliothek mit Ihrem Antrag zu bündeln. Sie können den Tarball herunterladen, seinen bs4-Katalog in die Codebasis Ihrer Anwendung duplizieren und Delightful Soup verwenden, ohne ihn auf irgendeine Weise einzuführen.

Ich verwende Python 2.7 und Python 3.2, um Delightful Soup zu erstellen, aber es sollte auch mit anderen laufenden Formen funktionieren.

Probleme nach der Gründung

Excellent Soup ist als Python-2-Code gebündelt. Zu dem Zeitpunkt, an dem Sie es zur Verwendung mit Python 3 einführen, wird es konsequent auf Python 3-Code umgestellt. Für den unwahrscheinlichen Fall, dass Sie das Bundle nicht einführen, wird der Code nicht umgestellt. Es gab ebenfalls Berichte über Windows-Maschinen, dass eine unangemessene Anpassung eingeführt wurde.

Für den Fall, dass Sie den ImportError “No module named HTMLParser” erhalten, ist Ihre Sorge, dass Sie die Python-2-Anpassung des Codes unter Python 3 ausführen.

Falls Sie den ImportError “No module named html.parser” erhalten, ist Ihre Sorge, dass Sie die Python 3-Form des Codes unter Python 2 ausführen.

In beiden Fällen besteht Ihre solideste Option darin, das “Lovely Soup”-Etablissement vollständig aus Ihrem System auszuschließen (wobei jeder Index mitgerechnet wird, der beim Lösen des Tarballs erstellt wurde) und das Etablissement noch einmal zu versuchen.

Für den unwahrscheinlichen Fall, dass Sie den SyntaxError “Invalid sentence structure” on hold ROOT_TAG_NAME = u'[document]’ erhalten, müssen Sie den Python 2 Code auf Python 3 umstellen. Dies können Sie entweder durch Einführen des Bundles erreichen:

$ python3 setup.py einführen

oder dann wieder durch physisches Ausführen des Inhalts der 2to3-Transformation von Python in der bs4-Registry:

$ 2bis3-3,2 – w bs4