Suche…


Bemerkungen

In diesem Abschnitt besprechen wir, was Schöne Suppe ist, wofür sie verwendet wird, und eine kurze Beschreibung, wie sie verwendet werden kann.

Beautiful Soup ist eine Python-Bibliothek, die Ihren vorinstallierten HTML / XML-Parser verwendet und die Webseite / HTML / XML in einen Baum konvertiert, der aus Tags, Elementen, Attributen und Werten besteht. Genauer gesagt besteht die Baumstruktur aus vier Objekttypen: Tag, NavigableString, BeautifulSoup und Comment. Dieser Baum kann dann mit den Methoden / Eigenschaften des BeautifulSoup-Objekts "abgefragt" werden, das aus der Parser-Bibliothek erstellt wird.

Ihr Bedarf: Oft haben Sie einen der folgenden Bedürfnisse:

  1. Sie können eine Webseite parsen, um zu ermitteln, wie viele der gefundenen Tags, wie viele Elemente jedes Tags gefunden werden und welche Werte vorhanden sind. Möglicherweise möchten Sie sie ändern.

  2. Möglicherweise möchten Sie die Elementnamen und -werte ermitteln, damit Sie sie zusammen mit anderen Bibliotheken für die Webseitenautomatisierung verwenden können, beispielsweise mit Selenium .

  3. Möglicherweise möchten Sie Daten, die auf einer Webseite angezeigt werden, in andere Formate übertragen oder extrahieren, z. B. eine CSV-Datei oder eine relationale Datenbank, z. B. SQLite oder MySQL. In diesem Fall hilft Ihnen die Bibliothek beim ersten Schritt, die Struktur der Webseite zu verstehen, obwohl Sie zum Übertragen andere Bibliotheken verwenden.

  4. Vielleicht möchten Sie herausfinden, wie viele Elemente mit einem bestimmten CSS-Stil gestaltet wurden und welche.

Sequenz für typische grundlegende Verwendung in Ihrem Python-Code:

  1. Importieren Sie die Schöne Suppenbibliothek

  2. Öffnen Sie eine Webseite oder einen HTML-Text mit der BeautifulSoup-Bibliothek, indem Sie angeben, welcher Parser verwendet werden soll. Das Ergebnis dieses Schritts ist ein BeautifulSoup-Objekt. (Hinweis: Dieser Parsername muss bereits als Teil Ihrer Python-Pakete installiert werden. Zum Beispiel ist html.parser ein mit Python mitgeliefertes 'with- html.parser -Paket. Sie können andere Parser wie lxml installieren oder html5lib .)

  3. "Abfrage" oder suchen Sie das BeautifulSoup-Objekt mit der Syntax 'object.method' und erhalten Sie das Ergebnis in eine Auflistung, z. B. ein Python-Wörterbuch. Bei einigen Methoden ist die Ausgabe ein einfacher Wert.

  4. Verwenden Sie das Ergebnis des vorherigen Schritts, um im Rest Ihres Python-Codes alles zu tun, was Sie damit machen möchten. Sie können auch die Elementwerte oder Attributwerte im Baumobjekt ändern. Änderungen wirken sich nicht auf die Quelle des HTML-Codes aus. Sie können jedoch Ausgabeformatierungsmethoden (z. B. prettify ) prettify , um eine neue Ausgabe aus dem BeautifulSoup-Objekt zu erstellen.

Häufig verwendete Methoden: Normalerweise werden die Methoden .find und .find_all verwendet, um den Baum zu durchsuchen und die Eingabeargumente .find_all .

Die Eingabeargumente sind: der gesuchte Tag-Name, Attributnamen und andere zugehörige Argumente. Diese Argumente können dargestellt werden als: ein String, ein regulärer Ausdruck, eine Liste oder sogar eine Funktion.

Übliche Verwendungen des BeautifulSoup-Objekts sind:

  1. Suche nach CSS-Klasse
  2. Suche nach Hyperlink-Adresse
  3. Suche nach Element-ID, Tag
  4. Suche nach Attributname Attributwert.

Wenn Sie den Baum mit einer Kombination der oben genannten Kriterien filtern möchten, können Sie auch eine Funktion schreiben, die als wahr oder falsch ausgewertet wird, und nach dieser Funktion suchen.

Versionen

Ausführung Bemerkungen Paketnamen Veröffentlichungsdatum
3.x Version 3.2.1; Nur Python 2 schöne Suppe 2012-02-16
4.x Version 4.5.0; Python 2 und 3 beautifulsoup4 2016-07-20

Installation oder Setup

pip kann zur Installation von BeautifulSoup verwendet werden. Führen Sie den folgenden Befehl aus, um Version 4 von BeautifulSoup zu installieren:

pip install beautifulsoup4

Beachten Sie, dass der Paketname beautifulsoup4 anstelle von beautifulsoup lautet. Letzterer Name steht für old release, siehe old beautifulsoup

Ein Beispiel für eine BeautifulSoup "Hello World"

from bs4 import BeautifulSoup
import requests

main_url = "https://fr.wikipedia.org/wiki/Hello_world"
req = requests.get(main_url)
soup = BeautifulSoup(req.text, "html.parser")

# Finding the main title tag.
title = soup.find("h1", class_ = "firstHeading")
print title.get_text()

# Finding the mid-titles tags and storing them in a list.
mid_titles = [tag.get_text() for tag in soup.find_all("span", class_ = "mw-headline")]

# Now using css selectors to retrieve the article shortcut links
links_tags = soup.select("li.toclevel-1")
for tag in links_tags:
    print tag.a.get("href")

# Retrieving the side page links by "blocks" and storing them in a dictionary
side_page_blocks = soup.find("div",
                            id = "mw-panel").find_all("div",
                                                      class_ = "portal")
blocks_links = {}
for num, block in enumerate(side_page_blocks):
    blocks_links[num] = [link.get("href") for link in block.find_all("a", href = True)]

print blocks_links[0]

Ausgabe:

"Hello, World!" program
#Purpose
#History
#Variations
#See_also
#References
#External_links
[u'/wiki/Main_Page', u'/wiki/Portal:Contents', u'/wiki/Portal:Featured_content', u'/wiki/Portal:Current_events', u'/wiki/Special:Random', u'https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_en.wikipedia.org&uselang=en', u'//shop.wikimedia.org']

Die Eingabe Ihres bevorzugten Parsers bei der Installation von Beautiful Soup vermeidet die übliche Warning , dass no parser was explicitely specified .

Es können verschiedene Methoden verwendet werden, um ein Element innerhalb der Webseitenstruktur zu finden.

Obwohl es eine Handvoll anderer Methoden gibt, sind CSS classes und CSS selectors zwei praktische Methoden, um Elemente in der Baumstruktur zu finden.

Es sollte beachtet werden, dass wir nach Tags suchen können, indem wir ihren Attributwert bei der Suche auf True setzen.

get_text() ermöglicht das Abrufen von in einem Tag enthaltenem Text. Es gibt es als eine einzige Unicode-Zeichenfolge zurück. tag.get("attribute") ermöglicht das tag.get("attribute") des Attributwerts eines Tags.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow