Web -Scraping: HTML -basierte Webbots mit BeautifulSoup erstellen

0

Es geht um Web -Mist und Methoden der Verwendung von BeautifulSoup und fordert Module an, um Website -Bots zu erstellen, um Webdaten zu erfassen.

Wie im vorherigen Kapitel 3 erwähnt, über „Schreiben, analysieren, CSV -Dateien mit abkratzten Daten lesen“, würden wir diskutieren, wie Sie Webdaten zum Kratzen angeben. Dies liegt daran, dass dies einer der wichtigsten Zwecke ist, warum wir Python als digitaler Vermarkter gerne lernen.

In diesem Python -Tutorial für digitale Vermarkter 4 werde ich Sie durch grundlegende Konzepte und Methoden führen. Es ist mit der Verwendung von BeautifulSoup und Anfragen, die Sie wissen müssen, um Webdaten und Kratzen anzugeben. Es ist besser, wenn Sie in diesem Teil verstehen, wie Sie HTML, CSS und JavaScript lesen. Aber es ist völlig in Ordnung, wenn Sie es noch nicht getan haben, weil der Zweck darin besteht, die derzeit gefundenen Daten zu finden. Außerdem lernt es einige Methoden, um bestimmte Daten für digitale Marketingzwecke zu kratzen.

Während der Python -Tutorial -Lektion nehme ich Ring.com als Beispiel, um Codes zu schreiben und die neuesten Angebote und Preise zu kratzen. Am Ende des Python -Tutorials können Sie feststellen, wo sich Ihre erwarteten Datenelemente auf einer Seite befinden, und alles in Minuten kratzen.

Inhaltsverzeichnis: Erstellen Sie einen Website -Bot, um bestimmte Website -Daten mit BeautifulSoup zu kratzen

  • Identifizieren Sie den Datenabschnitt auf einer Zielseite
  • Geben Sie die Daten an, um zu analysieren und zu kratzen
  • Erstellen Sie eine Schleife, um alle angegebenen Abschnittsdaten abzukratzen
  • Übergeben Sie fehlende Daten in einigen Abschnitten
  • Speichern Sie die Daten in einer CSV -Datei
  • Vollständiges Python -Skript des Website Bot

Identifizieren Sie den Datenabschnitt auf einer Zielseite

Wie Sie hier sehen können, gibt es viele Ringproduktbündel und Angebote, die möglicherweise unregelmäßig aktualisiert werden. Wenn Sie ein Ring -Reseller oder Ring -Konkurrent waren, möchten Sie definitiv die Produktmarketing- und Preisstrategie anpassen, damit die Conversion -Rate nicht beeinflusst wird, wenn der Umsatz für Ihr Unternehmen von entscheidender Bedeutung ist.

Um den Datenort zu finden, müssen wir ein Browser -Entwickler -Tool verwenden und den Webquellcode überprüfen. Ich nehme Chrome als Beispiel, Sie können ein Produkt auswählen und mit der rechten Maustaste klicken, um zu inspizieren.

Wir wollen Daten aus Schlagzeilen, Unterkopfleitungen, regulären Preisen, Werbepreisen, Beschreibungen und Produkt -URLs abkratzen. Basierend auf diesem Datenkratz -Ziel versuchen wir, den Code zu prüfen und diesen Abschnitt oder das, was wir als Abteilung nennen, herauszufinden, die alle Daten enthält, die wir abzielen, um zu kratzen:

<div class = ”PLP-Produkt” .......

Sie sind sich der Ruhe von Produktinformationen bewusst, die alle mit derselben Abteilung beginnen:

<div class = ”PLP-Produkt” .......

Um festzustellen, ob dies korrekt ist, können wir mit Methoden beginnen: find () und find_all ()

(HINWEIS: Ich gehe nicht auf Details zum Importieren von BeautifulSoup, fordert Module an. Wenn Sie mehr erfahren möchten, überprüfen Sie bitte die vorherigen Artikel:

Web -Scraping – Finden und finden Sie alle Funktionen

Lassen Sie uns zunächst Variablen erstellen, die als Ringweb, Ringoffers und Ringproduct bezeichnet werden

Ringweb = Requests.get ('https://ring.com/collections/offers') .text

Ringoffers = BeautifulSoup (Ringweb, 'lxml')

Find () Methode wird verwendet, um Ihre Krabbungsaktion zu finden und die Daten von diesem Ort aus zu beantworten. Wie der Pfad ist <div class = ”PLP-Produkt” .......

, damit wir eine Codezeile schreiben können

Ringproduct = Ringoffers.find ('Div', Klasse _ = 'PLP-Product')

In dieser Codezeile definieren wir eine Variable, RingrProduct, die die Daten des Zielpfads unter Ringoffern darstellt. Denken Sie nur daran, dass wir in der Python -Methode normalerweise Kommas verwenden, um den HTML -Quellcode aufzuteilen und einzelne Zitate für jeden Quellcode zu verwenden. In Bezug auf die Klasse müssen wir Class_ = verwenden, da Class = für die andere Funktion in Python steht.

Wenn wir versuchen, dies auszudrucken und den Befehl B B zu sehen, können Sie diese Codezeilen sehen, die die Abschnittsdaten bereits greifen können. Es funktioniert.

Da Ring.com nicht nur einen Satz von Bündeln auf der Angebotsseite verkauft hat, müssen wir die andere Methode find_all () verwenden. Wir müssen nur Find () durch find_all () ersetzen. Sie können alle Bündelabschnittsdaten generiert.

Geben Sie die Daten an, um zu analysieren und zu kratzen

Jetzt beginnen wir, die Zielabschnittsdaten und die spezifischen Daten zu analysieren, die wir kratzen möchten, wie wir bereits in diesem Artikel erwähnt haben.

Erstens ist es die Produktüberschrift

Wir können von Entwicklertools inspizieren und sehen, Ring bietet Seite H4 nur die Überschrift der Bundle -Produkte dar, sodass wir direkt eine Codezeile schreiben können:

HODING = RINGPRODUCT.H4.TEXT
Druck (Überschrift)

In Python haben wir einen Pfad unter Verwendung eines Punktes mit Ausnahme eines Pfades innerhalb einer Methode aufgeteilt. Wenn wir die String -Daten kratzen, können wir Text nach H4 verwenden.

Dann seine Unterkopflinie und Beschreibung

Wir können sehen, dass es zwei Orte gibt, die H6 verwenden (Unterkopf und Beschreibung). Anders als die Überschrift müssen wir die Find () -Methode verwenden und eine bestimmte H6

subheadline = Ringproduct.find ('H6', Klasse _ = 'Subtitelgröße-XS'). Text
drucken (Unterheadline)

Beschreibung = Ringprodukt.Find ('H6', Klasse _ = 'Produktdeschreibung Font__Exlight'). Text
drucken (Beschreibung)

Sie werden herausfinden, dass nicht alle Produktbündel Unterschreitungsleitungen haben. In Python müssen wir fehlende Daten übergeben, um Fehler beim Ausführen der Skriptdatei zu vermeiden. Ich werde gleich darüber sprechen.

Dann ist es der reguläre Preis und der Aktionspreis

promote_price = ringproduct.find ('span', class _ = 'regulärer Preis'). Text
print (promote_price)

Regular_price = Ringproduct.find ('span', Klasse _ = 'Compare-Price'). Text
print (regulal_price)

Last but not least ist es die Product Landing URL

Zeilen von Code:

product_url = ringproduct.a ['href']
product_link = f'https: //ring.com {product_url} '
print (product_link)

Grundsätzlich gibt es im Quellcode jedes Produktpakets nur eine einzigartige URL. Der Produktstarterkit-Landepfad für Produktstarter ist beispielsweise Sammlungen/Angebote/Produkte/Starter-Kit. Wir konnten also ignorieren, welchen Wert wir zielen, um [] zu kratzen und direkt zu nutzen, um den Href -Wert in einem Abschnitt zu kratzen: product_url = ringproduct.a [‚href‘]

Wenn wir diese Datenpfade jedoch in eine Datei kratzen, können sie nicht auf der Seite geöffnet und zugegriffen werden. Zum Anzeigen der vollständigen URL können wir eine variable product_link erstellen und die Formatfunktion nutzen, indem wir F “ verwenden und product_url in {} einfügen.

product_link = f'https: //ring.com {product_url} '

Wenn wir versuchen, dies auszudrucken, können wir ein Ergebnis erzielen, das beweist, dass es funktioniert.

Erstellen Sie eine Schleife, um alle abschnittsspezifizierten Daten abzukratzen

Diese Codezeilen funktionieren, damit wir ihn ausrollen können, um alle Daten in großen Mengen abzukratzen. Dafür müssen wir für … in und find_all Methoden verwenden:

Für Ringprodukte in Ringoffers.find_all ('Div', Klasse _ = 'PLP-Product'):

Da sich dieser Code auf der Ebene der Eltern befindet, müssen wir am Ende dieser Zeilen von Code- und Einrückungszeilen einen Dickdarm hinzufügen.

Wenn wir versuchen, dies auszudrucken, können wir das unten aufgeführte Ergebnis sehen, das alle Produktpaketinformationen enthält.

Übergeben Sie fehlende Daten in einigen Abschnitten

Möglicherweise sind Sie sich darüber im Klaren Kratzerprozess.

Dies ist die Reflexion der Kodierungswelt, da nicht alle Informationen in Ordnung und strukturiert sind. Deshalb müssen wir Try/AUSSEN verwenden, um dies zu bestehen, wenn wir rüberkommen.

Unterschrift:

versuchen:
subheadline = Ringproduct.find ('H6', Klasse _ = 'Subtitelgröße-XS'). Text
außer Ausnahme als E:
Subheadline = Keine

Aktionspreis:

versuchen:
Regular_price = Ringproduct.find ('span', Klasse _ = 'Compare-Price'). Text

außer Ausnahme als E:
regulal_price = keine

Für den variablen Wert unter Ausnahme von Ausnahme als E können Sie ihn so festlegen, dass es leicht zu verstehen ist, z. B. keine, 0, „NA“ usw.

Ich habe keine festgelegt, damit Sie das Antwortergebnis sehen können

Speichern Sie die Daten in einer CSV -Datei

Jetzt ist das Python -Skript fertig und es ist an der Zeit, die abgekratzten Daten an einem Ort zu speichern, der entweder eine lokale Datei oder einen Online -Server sein kann.

Ich werde auf Details zur CSV -Datei eingehen, weil ich zuvor über diese Lektion gesprochen habe. Wenn Sie interessiert sind, lesen Sie bitte den anderen Artikel

Nachdem die Codes fertig sind, würde eine CSV -Datei wie die folgende alle angegebenen Daten speichern, die wir kratzen möchten.

  • Unterstützen Sie unseren Kanal durch Spenden über PayPal (paypal.me/Easy2digital)
  • Abonnieren Sie meinen Kanal und schalten Sie die Benachrichtigungsglocke ein Easy2Digital Youtube Kanal.
  • Folgen Sie und liken Sie unsere Seite Easy2Digital Facebook Seite
  • Teilen Sie den Artikel in Ihrem sozialen Netzwerk mit dem Hashtag #easy2digital
  • Melden Sie sich für unseren wöchentlichen Newsletter an, um die neuesten Artikel, Videos und Rabattcodes von Easy2Digital zu erhalten
  • Abonnieren Sie unsere monatliche Mitgliedschaft über Patreon, um exklusive Vorteile zu genießen (www.patreon.com/louisludigital)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert