Web -Scraping: HTML -basierte Webbots mit BeautifulSoup erstellen
Es geht um Web -Mist und Methoden der Verwendung von BeautifulSoup und fordert Module an, um Website -Bots zu erstellen, um Webdaten zu erfassen.
As mentioned in the previous Chapter 3 about “How to Write, Parse, Read CSV Files with Scraped Data”, we would discuss how to specify web data to scrape. It’s because this is one of the key purposes of why we like to learn Python as a digital marketer.
In diesem Python -Tutorial für digitale Vermarkter 4 werde ich Sie durch grundlegende Konzepte und Methoden führen. Mit der Verwendung von BeautifulSoup und Anfragen müssen Sie wissen, 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
- FAQ
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 beeinträchtigt wird, wenn der Umsatz für Ihr Unternehmen von entscheidender Bedeutung ist.
To find the data location, we need to use a browser developer tool and inspect the web source code. I take Chrome as an example, you can select a product and right-click to select inspect.
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-product”.......</div>
Sie sind sich der Ruhe von Produktinformationen bewusst, die alle mit derselben Abteilung beginnen:
<div class=”plp-product”.......</div>
To see if this is correct, we can start using methods: find()
, and find_all()
(HINWEIS: Ich gehe nicht auf Details zum Importieren von BeautifulSoup ein, fordert Module an. Wenn Sie mehr erfahren möchten, überprüfen Sie bitte die vorherigen Artikel:
Kapitel 2: Web -Scraping mit BeautifulSoup, Anfragen, Python
Web -Scraping – Finden und finden Sie alle Funktionen
First of all, let us create variables called ringweb
, ringoffers
and ringproduct
ringweb = requests.get('https://ring.com/collections/offers').text
ringoffers = BeautifulSoup(ringweb,'lxml')
find()
method is used to locate your scraping action and get a response of the data from this location. As the path is, <div class=”plp-product”.......</div>
so we can write a line of code
ringproduct = ringoffers.find('div', class_='plp-product')
In this line of code, we define a variable, ringrproduct
which represents the data of the target path under ringoffers
. Just keep in mind, that in the Python method, we usually use commas to split the HTML source code and use single quotes for each source code. Regarding class, we need to use class_=, because class= stands for the other function in Python.
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 Entwicklertools inspizieren und sehen, Ring bietet Seite H4 nur die Überschrift der Bündelprodukte, sodass wir direkt eine Codezeile schreiben können:
headline = ringproduct.h4.text
print(headline)
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
We can see there are two places that are using h6 (subheadline and description). So different from the headline, we need to use find()
method and locate a specific h6 data
subheadline = ringproduct.find('h6', class_='sub-title size-xs').text
print(subheadline)
description = ringproduct.find('h6',class_='product-description font__exlight').text
print(description)
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_='regular-price').text
print(promote_price)
regular_price = ringproduct.find('span',class_='compare-price').text
print(regular_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)
Basically, there’s only one unique URL showing in the source code of each product bundle. For example, the product starter kit landing path is collections/offers/products/starter-kit. So we could ignore which value we aim to scrape and directly leverage [ ], to scrape href value in a section: 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:
for ringproduct in ringoffers.find_all('div', class_='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
You might be aware that not all product bundles have subheadline and promotion price, so if you try to run subheadline and promotion price lines of code if you come across this response from Python: object has no attribute ‘text’, and it would stop the scraping process.
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:
try:
subheadline = ringproduct.find('h6', class_='sub-title size-xs').text
except Exception as e:
subheadline = None
Aktionspreis:
try:
regular_price = ringproduct.find('span',class_='compare-price').text
except Exception as e:
regular_price = None
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.
Vollständiges Python -Skript des Website Bot
If you would like to have the full version of the Python Script of Website Bot, please subscribe to our newsletter by adding the message Chapter 4. We would send you the script immediately to your mailbox.
So einfach, oder? Ich hoffe, Sie lesen gerne Kapitel 4: Erstellen Sie einen Website -Bot, um bestimmte Website -Daten mit BeautifulSoup zu kratzen. Wenn Sie dies getan haben, unterstützen Sie uns bitte, indem Sie eines der unten aufgeführten Dinge tun, da dies immer unserem Kanal hilft.
- Support and donate to our channel through PayPal (paypal.me/Easy2digital)
- Subscribe to my channel and turn on the notification bell Easy2Digital Youtube channel.
- Follow and like my page Easy2Digital Facebook page
- Teilen Sie den Artikel in Ihrem sozialen Netzwerk mit dem Hashtag #Easy2Digital mit
- Buy products with Easy2Digital 10% OFF Discount code (Easy2DigitalNewBuyers2021)
- Sie melden sich für unseren wöchentlichen Newsletter an, um die neuesten Artikel, Videos und Rabattcodes für Easy2Digital zu erhalten
- Subscribe to our monthly membership through Patreon to enjoy exclusive benefits (www.patreon.com/louisludigital)
Abgesehen von dem Abkratzen von HTML- und XML -Webdaten, wenn Sie lernen möchten, einige Plattformdaten abzurufen, auf die nur über API zugegriffen werden können, lesen Sie bitte diesen Artikel. Wir würden mit dem YouTube -Kanal beginnen.
Inhaltsverzeichnis:
Q1: Was ist S
A: S. ist ein neues Produkt, das…
Q2: Was sind die Vorteile von S
A: S. ist ein neues Produkt, das…
Q3: Wie verwende ich S
A: S. ist ein neues Produkt, das…
Q4: Wo kann ich S
A: S. ist ein neues Produkt, das…
Q5: Wie viel kostet S
A: S. ist ein neues Produkt, das…
Q6: Gibt es eine Garantie für S
A: S. ist ein neues Produkt, das…
Q7: Was sind die häufigsten Probleme mit S
A: S. ist ein neues Produkt, das…
Q8: Wie kann ich Probleme mit S
A: S. ist ein neues Produkt, das…
Q9: Was sind die neuesten Nachrichten zu S
A: S. ist ein neues Produkt, das…
Q10: Wo kann ich weitere Informationen zu S
A: S. ist ein neues Produkt, das…