Scrapen von Website-Sitemaps für mehr Effizienz
Robert Munceanu am 20. Mai 2021

Hallo und willkommen zurück zu unserer Web Scraping Show! In der heutigen Folge werden wir herausfinden, wie Preisoptimierung unserem Unternehmen helfen kann, zu wachsen, indem wir eine Website mithilfe ihrer Sitemaps scannen.
Wenn ihr wissen wollt, was als Nächstes passiert, nehmt euch einen Sitzplatz und ein paar Snacks und schaut, ich meine, lest weiter!
Warum Sie Produktdaten benötigen
Öffentliche Informationen für das eigene Unternehmenswachstum zu nutzen, ist eine gängige Praxis unter Unternehmern in aller Welt.
Preisinformationen, Konkurrenzbeobachtung, Umsatzoptimierung und andere Lösungen, die Ihrem Unternehmen zum Erfolg verhelfen, können mit einem Web-Scraping-Tool erworben werden. Stellen Sie sich vor, wie viel Zeit es kosten würde, die Informationen von Hunderten von Produkten zu kopieren und in eine Tabelle einzufügen. An dieser Stelle ändert WebScrapingAPI die Spielregeln.
Die klassische Art, Informationen mit einem Web Scraping Tool zu sammeln
Nehmen wir an, Sie möchten die Produkte einer Website massenweise scrapen. Eine Möglichkeit, ein Web-Scraping-Tool zu verwenden, ist die manuelle Auswahl der URLs der einzelnen Produktseiten, die das Tool scrapen soll. Das bedeutet, dass Sie auf der Website recherchieren müssen, um herauszufinden, wo sich die einzelnen Produktseiten befinden und so weiter.
Wenn die Website nur ein paar Dutzend Seiten hat, ist das noch überschaubar, aber was ist, wenn die Website Hunderte oder gar Tausende von Seiten hat? Die Arbeit könnte etwas mühsam werden, viel Zeit in Anspruch nehmen und auch unangenehm sein.
Was können wir in einer solchen Situation tun?
Schneller geht's nicht
Sitemaps. Was sind sie?
Sitemaps können von Vorteil sein, wenn wir über SEO sprechen. Sie sind wie die Blaupause einer Website und helfen Suchmaschinen dabei, den gesamten Inhalt Ihrer Website zu finden, zu crawlen oder sogar zu indizieren.
Normalerweise werden sie von großen Websites verwendet, um ihre Seiten besser zu strukturieren und den Suchmaschinen zu helfen, die wichtigsten Seiten von den weniger wichtigen zu unterscheiden.
Können wir diese Sitemaps beim Scraping zu unserem Vorteil nutzen? Ja, natürlich! Finden wir heraus, wie sie uns helfen können, den Inhalt einer Website massenhaft zu scrapen.
Probieren wir die Methode aus!
Um WebScrapingAPI nutzen zu können, müssen wir ein Konto anlegen und unseren privaten Zugangsschlüssel erhalten, mit dem wir uns bei der API authentifizieren. Sie brauchen sich keine Sorgen zu machen, denn die Erstellung Ihres Kontos ist kostenlos und Sie müssen weder Ihre Karte noch andere persönliche Daten angeben.
Wenn wir uns anmelden, werden wir zum Dashboard weitergeleitet. Hier sehen wir unseren Zugangsschlüssel, den wir in wenigen Augenblicken verwenden werden. Bewahren Sie ihn für sich selbst auf, aber wenn Sie glauben, dass Ihr privater Schlüssel kompromittiert wurde, können Sie ihn jederzeit zurücksetzen, indem Sie auf die Schaltfläche "API-Schlüssel zurücksetzen" klicken.
Für weitere Details darüber, wie WebScrapingAPI funktioniert und wie es in Ihr Projekt integriert werden kann, können Sie jederzeit die Dokumentation einsehen. Und um die Dinge auszuprobieren, hilft Ihnen der API Playground, die Ergebnisse noch besser zu visualisieren!
Genug mit der Präsentation, sehen wir uns an, wie wir WebScrapingAPI zum Scrapen mit Hilfe von Sitemaps verwenden können.
In diesem Beispiel verwenden wir NodeJS als Programmiersprache, aber Sie können jede beliebige Programmiersprache verwenden, mit der Sie vertraut sind. Dann scrapen wir die Sitemap und analysieren die Produkt-URLs, scrapen die Produktseiten und speichern die Daten in einer csv-Datei. Auf diese Weise können Sie mit WebScrapingAPI massenhaft scrapen, aber wenn Sie nur bestimmte Seiten scrapen möchten, können Sie auch spezifische Anfragen stellen.
1. Sitemap-URLs finden
In diesem Beispiel werden wir uns die Sitemaps von Maplin ansehen, die am Ende der robots.txt zu finden sind.
Wenn man der obigen URL folgt, wird man zu der XML-Datei mit den Sitemap-Links weitergeleitet.

Wenn wir dem ersten Link von oben folgen, gelangen wir zu einer Sitemap mit verschiedenen Seiten, von denen einige Produktseiten sind! Das sind die Seiten, aus denen wir Daten extrahieren und zur späteren Verwendung in einer CSV-Datei speichern werden. Klingt einfach, nicht wahr?

2. Identifizieren Sie die Selektoren
Um nur die Daten zu extrahieren, die wir benötigen, müssen wir wissen, wo sie sich befinden. Rufen wir dazu die URL der intelligenten Beleuchtungsschalter von oben auf und verwenden Sie das Inspektionstool für Entwickler.
Wir stellen fest, dass jedes Produkt in der Liste unter einem li-Tag mit der Klasse ais-Hits-item zu finden ist.
Innerhalb dieses Knotens sehen wir, dass der Titel und der Preis unter dem h3-Tag mit der Klasse result-title bzw. dem span-Tag mit der Klasse after_special price stehen.

3. Installation der erforderlichen Pakete
Dieser Schritt ist recht einfach: Installieren Sie einfach diese Gruppe von Paketen:
- jsdom: hilfreich, wenn es um das Parsen von HTML geht.
- got: Dieses Paket hilft uns, die HTTP-Anfrage an WebScrapingAPI zu stellen.
- xml2js: parst das XML und konvertiert es in ein Objekt zur einfacheren Verwendung.
- csv-writer: zum Speichern der extrahierten Daten in einer csv-Datei.
Um alle diese Pakete zu installieren, verwenden Sie einfach diese Befehlszeile im Terminal Ihres Projekts:
npm install jsdom got xml2js csv-writer
4. Parameter für die Anfrage vorbereiten
Hier nutzen wir eine der Funktionen von WebScrapingAPI, um die Seite zu rendern und zu warten, bis der gesamte Inhalt geladen ist. Auf diese Weise können wir an mehr Daten gelangen. Vergessen Sie nicht, Ihren privaten Zugangsschlüssel und die URL hinzuzufügen, die Sie scrapen möchten, in unserem Fall die Sitemap-URL, die die Links zu den Produktseiten enthält.
const api_url = "https://api.webscrapingapi.com/v1"
const url = "https://www.maplin.co.uk/media/sitemap/maplin_uk-1-1.xml"
let params = {
api_key: "XXXXX",
url: url,
render_js: 1,
wait_until: 'networkidle2'
}
5. Stellen Sie die Anfrage und analysieren Sie die resultierende XML-Zeichenfolge
Nachdem wir das Ergebnis von der API erhalten haben, müssen wir den Xml-String in ein Objekt umwandeln.
const response = await got(api_url, {searchParams: params})
const parser = new xml2js.Parser()
parser.parseString(response.body, async function (err, result) {
// the rest of the code
}
Der nächste Schritt besteht darin, die Produkt-URLs zu durchlaufen, für jede von ihnen eine Anfrage zu erstellen, um die Produktdaten zu extrahieren und auszuwählen, welche Informationen wir speichern müssen.
6. Iterieren, anfordern, auswählen
Für dieses Beispiel brauchen wir nicht alle URLs der Sitemap zu durchlaufen, also nehmen wir nur die URLs von Position 5 bis 10. Als Nächstes bereiten wir die Parameter für die API-Anfrage vor und verwenden JSDOM, um das resultierende HTML zu parsen.
Um den Titel und den Preis des Produkts auszuwählen, haben wir zuvor gesehen, dass sie sich innerhalb des h3-Tags mit der Klasse result-title bzw. des span-Tags mit der Klasse after_special price befinden.
Nachdem wir ein Objekt mit dem Titel und dem Preis, die wir gerade extrahiert haben, erstellt haben, fügen wir es dem Array products hinzu.
Der Code sollte in etwa so aussehen:
let products = []
for (let index = 5; index < 10; index++) {
params.url = result['urlset']['url'][index]['loc'][0]
const res = await got(api_url, {searchParams: params})
const {document} = new JSDOM(res.body).window
const elements = document.querySelectorAll('li.ais-Hits-item')
if (elements) {
elements.forEach((element) => {
let element_obj = {}
const title = element.querySelector('h3.result-title')
if (title && title.innerHTML) element_obj.title = title.innerHTML
const price = element.querySelector('.after_special.price')
if (price && price.innerHTML) element_obj.price = price.innerHTML
if (element_obj && element_obj.title && element_obj.price)
products.push(element_obj)
})
}
}
7. Speichern Sie die extrahierten Daten
Hier verwenden wir die csv-writer-Bibliothek , um eine Liste von Objekten in eine csv-Datei zu konvertieren.
Geben Sie einfach den Pfad und den Namen der Datei an, die bald erstellt werden soll, sowie das Array headers, das aus Spaltenobjekten besteht, wobei id die Eigenschaften der Produktobjekte und title den Namen der Spalte darstellt.
const csvWriter = require('csv-writer').createObjectCsvWriter({
path: 'products.csv',
header: [
{id: 'title', title: 'Product Name'},
{id: 'price', title: 'Product Price'}
]
})
csvWriter.writeRecords(products).then(() => console.log('Success!!'))
8. Sie sind fertig!
Wir haben erfolgreich Daten mit Hilfe von Sitemaps extrahiert, um durch die Produktseiten einer Website zu navigieren - herzlichen Glückwunsch! Hier ist die vollständige Ansicht des Codes:
const {JSDOM} = require("jsdom");
const got = require("got");
const xml2js = require("xml2js");
(async () => {
const api_url = "https://api.webscrapingapi.com/v1"
const url = "https://www.maplin.co.uk/media/sitemap/maplin_uk-1-1.xml"
let params = {
api_key: "XXXXX",
url: url,
render_js: 1,
wait_until: 'networkidle2'
}
const response = await got(api_url, {searchParams: params})
const parser = new xml2js.Parser()
parser.parseString(response.body, async function (err, result) {
let products = []
for (let index = 5; index < 10; index++) {
params.url = result['urlset']['url'][index]['loc'][0]
const res = await got(api_url, {searchParams: params})
const {document} = new JSDOM(res.body).window
const elements = document.querySelectorAll('li.ais-Hits-item')
if (elements) {
elements.forEach((element) => {
let element_obj = {}
const title = element.querySelector('h3.result-title')
if (title && title.innerHTML) element_obj.title = title.innerHTML
const price = element.querySelector('.after_special.price')
if (price && price.innerHTML) element_obj.price = price.innerHTML
if (element_obj && element_obj.title && element_obj.price)
products.push(element_obj)
})
}
}
const csvWriter = require('csv-writer').createObjectCsvWriter({
path: 'products.csv',
header: [
{id: 'title', title: 'Product Name'},
{id: 'price', title: 'Product Price'}
]
})
csvWriter.writeRecords(products).then(() => console.log('Success!!'))
})
})();
Probieren Sie es selbst aus!
Ich hoffe, dieses Tutorial war hilfreich und hat Ihnen gezeigt, wie einfach es ist, Sitemaps zu unserem Vorteil beim Web Scraping zu nutzen.
Das ist noch weniger zeitaufwändig, und so verpassen Sie keine Seiten, wie Sie es normalerweise bei der manuellen Navigation auf einer Website tun würden.
Wenn es um Scraping en masse geht, ist es klar, dass die Verwendung von Sitemaps eine weitaus bessere Lösung ist als die manuelle Auswahl jeder einzelnen Produktseite oder sogar der Einsatz eines Spiders zum Crawlen der Website.
Wie wäre es, wenn Sie bis zur nächsten Folge unserer WebScraping-Show die WebScrapingAPI ausprobieren? Sie können es mit bis zu 1000 kostenlosen API-Aufrufen testen. Bis zum nächsten Mal!
Nachrichten und Aktualisierungen
Bleiben Sie auf dem Laufenden mit den neuesten Web Scraping-Anleitungen und Nachrichten, indem Sie unseren Newsletter abonnieren.
We care about the protection of your data. Read our <l>Privacy Policy</l>.Privacy Policy.

Ähnliche Artikel

In unserem umfassenden Leitfaden erfahren Sie, wie Sie Playwright für Web Scraping und Automatisierung einsetzen. Von der grundlegenden Einrichtung bis zu fortgeschrittenen Techniken deckt dieser Leitfaden alles ab.


Nutzen Sie die Möglichkeiten der Automatisierung und extrahieren Sie mit Leichtigkeit wertvolle Daten aus dem Web. Dieser Artikel führt Sie durch den Prozess der Verwendung der Parsel-Bibliothek in Python, um mit CSS- und XPath-Selektoren Daten aus Websites zu scrapen.


Meistern Sie Web-Scraping mit Scrapy. Lernen Sie Schritt für Schritt mit praktischen Beispielen in diesem umfassenden Leitfaden. Steigen Sie jetzt in die große Liga der Datenextraktion ein!
