Python BeautifulSoup Tutorial für Anfänger

Python BeautifulSoup Tutorial für Anfänger
Web -Scraping ist in der heutigen Welt von großer Bedeutung. Jeder benötigt Daten aus verschiedenen Quellen, einschließlich Webseiten. In diesem Artikel werden wir uns untersuchen. Das Extrahieren der erforderlichen Daten aus einer Reihe von Alphabeten und Symbolen, dank dieser großartigen Bibliothek ist viel einfacher geworden. BeautifulSoup, geschrieben in Python. Der folgende Befehl würde dazu beitragen, die Bibliothek zu installieren:
PIP Installieren Sie BeautifulSoup4

Um zu überprüfen, ob die Installation erfolgreich war, aktivieren Sie die interaktive Python -Shell und importieren. Wenn kein Fehler angezeigt wird, bedeutet dies, dass alles gut gelaufen ist. Wenn Sie nicht wissen, wie Sie das machen sollen, geben Sie die folgenden Befehle in Ihr Terminal ein.

$ python
Python 3.5.2 (Standard, 14. September 2017, 22:51:06)
[GCC 5.4.0 20160609] unter Linux
Geben Sie "Hilfe", "Copyright", "Credits" oder "Lizenz" für weitere Informationen ein.
>>> BS4 importieren

Um mit der wunderschönen Bibliothek zu arbeiten, müssen Sie in HTML passieren. Wenn Sie mit echten Websites arbeiten, können Sie die HTML einer Webseite mithilfe der Anfragebibliothek erhalten. Die Installation und Nutzung der Anfragebibliothek geht über den Rahmen dieses Artikels hinaus. Sie können sich jedoch in der Dokumentation befassen, sie ist ziemlich einfach zu bedienen. Für diesen Artikel werden wir einfach HTML in einer Python -Zeichenfolge verwenden, die wir anrufen würden html.

html = "" "

Angestelltenprofil



Name:Dr. Peter Parker
Arbeit:Maschinenlerningenieur
Telefon:+12345678910
Email:
[email protected]

Webseite:
pparkerworks.com



"" "

Um BeautifulSoup zu verwenden, importieren wir ihn mit dem folgenden Code in den Code:

Aus BS4 Import BeautifulSoup

Dies würde BeautifulSoup in unseren Namespace einführen, und wir können es bei der Parsen unserer Saite verwenden.

Suppe = BeautifulSoup (HTML, "LXML")

Jetzt, Suppe ist ein wunderschönes Objekt vom Typ BS4.BeautifulSoup und wir können alle schönen Operationen auf der SuppeVariable.

Schauen wir uns einige Dinge an, die wir jetzt mit BeautifulSoup machen können.

Das Hässliche, schöne machen

Wenn BeautifulSoup HTML analysiert, liegt es normalerweise nicht in den besten Formaten. Der Abstand ist ziemlich schrecklich. Die Tags sind schwer zu finden. Hier ist ein Bild, um anzuzeigen, wie sie aussehen würden, wenn Sie das drucken können Suppe:

Es gibt jedoch eine Lösung dafür. Die Lösung verleiht dem HTML den perfekten Abstand und lässt die Dinge gut aussehen. Diese Lösung wird zu Recht genannt “hübsch“.

Zugegeben, Sie können diese Funktion möglicherweise nicht die meiste Zeit verwenden. Es gibt jedoch Zeiten, in denen Sie möglicherweise keinen Zugriff auf das Inspektionselement -Tool eines Webbrowsers haben. In diesen Zeiten begrenzter Ressourcen würden Sie die hübsche Methode sehr nützlich finden.

So verwenden Sie es:

Suppe.prettify ()

Das Markup würde genau wie im Bild unten richtig verteilt aussehen:

Wenn Sie die Prettify -Methode auf die Suppe anwenden, ist das Ergebnis kein BS4 vom Typ BS4 mehr.Schöne Gruppe. Das Ergebnis ist nun Typ "Unicode". Dies bedeutet.

Finden Sie unsere Lieblings -Tags

HTML besteht aus Tags. Es speichert alle Daten in ihnen und inmitten all dieser Unordnung die Daten, die wir benötigen. Grundsätzlich bedeutet dies, wenn wir die richtigen Tags finden, können wir das bekommen, was wir brauchen.

Wie finden wir die richtigen Tags?? Wir verwenden die Fund- und Find_all -Methoden von BeautifulSoup.

So funktionieren sie:

Der finden Methode sucht nach dem ersten Tag mit dem benötigten Namen und gibt ein Objekt vom Typ BS4 zurück.Element.Schild.

Der finde alle Methode hingegen sucht nach allen Tags mit dem benötigten Tag -Namen und gibt sie als Liste des Typs BS4 zurück.Element.Ergebnis. Alle Elemente in der Liste sind vom Typ BS4.Element.Tag, damit wir die Indexierung auf der Liste durchführen und unsere schöne Erkundung fortsetzen können.

Lassen Sie uns einen Code sehen. Finden wir alle Div -Tags:

Suppe.Finden Sie ("Div")

Wir würden das folgende Ergebnis erhalten:

Name:Dr. Peter Parker

Wenn Sie die HTML -Variable überprüfen, werden Sie feststellen, dass dies das erste Div -Tag ist.

Suppe.find_all ("div")

Wir würden das folgende Ergebnis erhalten:

[
Name:Dr. Peter Parker,
Arbeit:Maschinenlerningenieur,
Telefon:+12345678910,
Email:
[email protected]
,
Webseite:
pparkerworks.com
]

Es gibt eine Liste zurück. Wenn Sie beispielsweise das dritte Div -Tag möchten, führen Sie den folgenden Code aus:

Suppe.find_all ("div") [2]

Es würde Folgendes zurückgeben:

Telefon:+12345678910

Finden Sie die Attribute unserer Lieblings -Tags

Jetzt, wo wir gesehen haben, wie man unsere Lieblings -Tags bekommt, wie wäre es mit ihren Attributen?

Sie denken vielleicht an diesem Punkt: „Wofür brauchen wir Attribute?“. Na ja, die meisten Daten, die wir benötigen, werden E -Mail -Adressen und Websites sein. Diese Art von Daten wird normalerweise in Webseiten mit den Links im Attribut „href“ hyperlink.

Wenn wir das benötigte Tag extrahiert haben, können wir mit den Methoden mit Find oder Find_all Attribute erhalten, indem wir angewendet werden Attrs. Dies würde ein Wörterbuch des Attributs und dessen Wert zurückgeben.

Um das E -Mail -Attribut beispielsweise zu erhalten, erhalten wir die Tags, die die erforderlichen Informationen umgeben, und machen Folgendes aus.

Suppe.find_all ("a") [0].Attrs

Das würde das folgende Ergebnis zurückgeben:

'href': 'mailto: [email protected] '

Gleiches gilt für das Website -Attribut.

Suppe.find_all ("a") [1].Attrs

Das würde das folgende Ergebnis zurückgeben:

'href': 'http: // pparkerworks.com '

Die zurückgegebenen Werte sind Wörterbücher und normale Wörterbuchsyntax können angewendet werden, um die Schlüssel und Werte zu erhalten.

Lassen Sie uns Eltern und Kinder sehen

Überall gibt es Tags. Manchmal wollen wir wissen, was die Kinder -Tags sind und was das Eltern -Tag ist.

Wenn Sie noch nicht wissen, was ein Eltern- und Kinder -Tag ist, sollte diese kurze Erklärung ausreichen: Ein übergeordnetes Tag ist das unmittelbare äußere Tag und ein Kind ist das unmittelbare innere Tag des betreffenden Tags.

Wenn Sie sich unsere HTML ansehen, ist das Körper Tag das übergeordnete Tag aller Div -Tags. Außerdem sind das mutige Tag und das Anker -Tag die Kinder der Div -Tags, wo nicht alle Div -Tags zutreffend sind.

So können wir auf das übergeordnete Tag zugreifen, indem wir das anrufen FindParent Methode.

Suppe.find ("div").findParent ()

Dies würde das gesamte Körperschild zurückgeben:


Name:Dr. Peter Parker
Arbeit:Maschinenlerningenieur
Telefon:+12345678910
Email:
[email protected]

Webseite:
pparkerworks.com

Um das Kindermarke des vierten Div -Tags zu erhalten, nennen wir das Findchildren Methode:

Suppe.find_all ("div") [4].findchildren ()

Es gibt Folgendes zurück:

[Webseite:, pparkerworks.com]

Was ist für uns drin?

Beim Surfen von Webseiten sehen wir nicht überall Tags auf dem Bildschirm. Alles, was wir sehen, ist der Inhalt der verschiedenen Tags. Was ist, wenn wir den Inhalt eines Tags wollen, ohne dass alle Winkelklammern das Leben unangenehm machen? Das ist nicht schwierig, alles, was wir tun würden, ist anzurufen get_text Methode auf dem Tag der Wahl und wir erhalten den Text im Tag und wenn das Tag andere Tags enthält, erhält er auch ihre Textwerte.

Hier ist ein Beispiel:

Suppe.finde ("Körper").get_text ()

Dies gibt alle Textwerte im Body -Tag zurück:

Name: Dr. Peter Parker
Job: Maschinenlerningenieur
Telefon: +12345678910
E -Mail: [email protected]
Website: pparkerWorks.com

ABSCHLUSS

Das haben wir für diesen Artikel. Es gibt jedoch noch andere interessante Dinge, die mit BeautifulSoup gemacht werden können. Sie können entweder die Dokumentation überprüfen oder verwenden Dir (BeautfulSoup) Auf der interaktiven Schale sehen Sie die Liste der Operationen, die auf einem wunderschönen Objekt ausgeführt werden können. Das ist alles von mir heute, bis ich wieder schreibe.