Business process automation expert
Erschließen Sie das Potenzial von Webdaten, ganz ohne fortgeschrittene Programmierkenntnisse! Dieses Tutorial zeigt Ihnen, wie Sie mühelos Informationen von Webseiten extrahieren und direkt in Google Sheets übertragen können, indem Sie Google Apps Script verwenden. Dies eröffnet Unternehmen eine Welt voller Möglichkeiten. Automatisieren Sie Marktforschung, Wettbewerbsanalysen und Datenerfassung, sparen Sie unzählige Stunden manueller Arbeit und gewinnen Sie wertvolle Erkenntnisse – und das alles ohne umfangreiche HTML-Kenntnisse.
Datenextraktion aus dem Web ist vergleichbar mit dem automatischen Kopieren und Einfügen von Informationen von Webseiten. Stellen Sie sich einen digitalen Assistenten vor, der Webseiten besucht und automatisch bestimmte Informationen sammelt. Anstatt Texte oder Bilder manuell auszuwählen und zu kopieren, erledigt ein Programm diese Aufgabe für Sie und sammelt Daten wie Preise, Produktdetails oder Kontaktinformationen.
Diese extrahierten Daten können dann für verschiedene Zwecke verwendet werden, z. B. zum Vergleichen von Preisen verschiedener Online-Händler, zum Sammeln von Verkaufskontakten, zum Erstellen von Benachrichtigungen bei Inhaltsänderungen und vielem mehr. Im Wesentlichen automatisiert die Datenextraktion aus dem Web mühsame manuelle Arbeit und spart erheblich Zeit und Aufwand, indem große Mengen an Webdaten effizient extrahiert und organisiert werden.
Im heutigen wettbewerbsintensiven Geschäftsumfeld sind Produktivität und eine optimierte Ressourcenzuweisung entscheidend für den Erfolg. Die Datenextraktion aus dem Web ist ein wertvolles Werkzeug, um diese Ziele zu erreichen, da sie die Produktivität durch die Automatisierung der zeitaufwendigen Datenerfassung und -analyse erheblich verbessert.
Durch die Automatisierung der Datenextraktion von Webseiten sparen Unternehmen im Vergleich zu manuellen Methoden erheblich Zeit und Aufwand. Diese gesteigerte Effizienz ermöglicht es Teams, sich auf strategische Initiativen anstatt auf sich wiederholende Aufgaben zu konzentrieren.
Darüber hinaus sind die durch Datenextraktion aus dem Web gesammelten Daten nicht nur ein Selbstzweck; sie dienen als wichtiger Input für weitere Automatisierungsprozesse. Zum Beispiel können extrahierte Daten dynamische, wettbewerbsbasierte Preisstrategien im E-Commerce unterstützen oder automatisch wertvolle Investitionsmöglichkeiten identifizieren, indem Immobilienangebote von mehreren Portalen zusammengeführt werden.
Diese nahtlose Integration mit anderen Automatisierungs-Workflows verstärkt die Wirkung der Datenextraktion aus dem Web und macht sie zu einem unverzichtbaren Aktivposten für jedes zukunftsorientierte Unternehmen.
Google Apps Script ist eine cloudbasierte Skriptsprache, die auf JavaScript basiert und es Ihnen ermöglicht, Aufgaben zu automatisieren und leistungsstarke Integrationen innerhalb von Google Workspace (ehemals G Suite) zu erstellen. Sein einzigartiger Vorteil liegt in seiner Fähigkeit, verschiedene Google-Dienste nahtlos miteinander zu verbinden, darunter Gmail, Docs, Drive, Kalender und vor allem Sheets, was es außergewöhnlich gut für die Erstellung umfassender Automatisierungen geeignet macht. Diese Vernetzung ermöglicht es Ihnen, Workflows zu erstellen, die sich über mehrere Anwendungen erstrecken, Prozesse zu optimieren und die Produktivität zu steigern.
Speziell für die Datenextraktion aus dem Web ermöglicht der UrlFetchApp
-Dienst von Apps Script das direkte Abrufen von Inhalten von Webseiten und somit die automatisierte Datenextraktion und -integration mit den übrigen Google Workspace-Anwendungen. Durch das Senden von HTTP-Anfragen an Webseiten können Sie HTML-, XML- oder JSON-Daten abrufen. Diese extrahierten Daten können dann mithilfe von JavaScript innerhalb des Skripts analysiert und strukturiert werden.
Die wahre Stärke dieses Ansatzes zeigt sich in Kombination mit Google Sheets: Extrahierte Daten können direkt in Tabellenkalkulationen geschrieben werden, was eine bequeme und vertraute Umgebung für Datenspeicherung, -organisation, -analyse, -visualisierung und weitere Automatisierung bietet.
Wir erstellen ein System, das Folgendes tut:
Zuerst benötigen Sie ein Google Sheet. Ihr Google Sheet sollte mindestens drei Spalten haben:
Hier finden Sie eine Vorlage für die Tabellenkalkulation.
Der nächste entscheidende Schritt für Ihr Datenextraktionswerkzeug besteht darin, ihm genau mitzuteilen, welche Information von der Webseite abgerufen werden soll. Hier kommt der CSS-Selektor ins Spiel.
Stellen Sie sich einen CSS-Selektor als eine Adresse für ein bestimmtes Element auf einer Webseite vor – wie den Preis, einen Produkttitel oder die Anzahl der Bewertungen. So finden Sie diese Adresse ganz einfach mit dem Chrome-Browser:
Das war’s! Der CSS-Selektor für dieses spezifische Element wurde nun in Ihre Zwischenablage kopiert. Diesen Wert fügen Sie dann in Spalte B Ihres Google Sheets für die entsprechende Produkt-URL ein und teilen Ihrem Extraktionsskript damit genau mit, wonach es auf dieser Seite suchen soll.
Schauen wir uns nun den Code an, der die Magie vollbringt. Öffnen Sie den Skripteditor in Ihrem Google Sheet, indem Sie zu „Erweiterungen“ > „Apps Script“ gehen. (Hinweis: Der Menüpfad kann je nach Google Sheets-Version variieren, oft auch „Tools“ > „Skripteditor“). Kopieren Sie den untenstehenden Code und fügen Sie ihn in den Skripteditor ein.
/**
* Fetches product prices from URLs in a Google Sheet and updates the sheet with the prices.
*/
// Konfiguration (Aktualisieren Sie diese mit Ihren tatsächlichen Werten)
const SHEET_ID = `YOUR_SHEET_ID`; // Ersetzen Sie dies durch Ihre tatsächliche Sheet-ID
const SHEET_NAME = `YOUR_SHEET_NAME`; // Ersetzen Sie dies durch Ihren tatsächlichen Sheet-Namen
const URLS_COLUMN_ID = 1; // Spalte, die URLs enthält (A = 1)
const CSS_SELECTOR_COLUMN = 2; // Spalte, die CSS-Selektoren enthält (B = 2)
const PRICE_COLUMN = 3; // Spalte zum Schreiben der Preise (C = 3)
const REQUEST_DELAY = 1000; // Verzögerung zwischen Anfragen in Millisekunden (1 Sekunde)
/**
* Hauptfunktion zum Ausführen des Skripts.
*/
function main() {
const urlData = getUrlsFromSheet();
if (urlData.length === 0) {
Logger.log("No URLs to process.");
return;
}
const prices = [];
for (let i = 0; i < urlData.length; i++) {
const url = urlData[i].url;
const selector = urlData[i].selector;
const html = fetchHtml(url);
const price = extractPrice(html, selector);
prices.push(price);
Utilities.sleep(REQUEST_DELAY); // Verzögerung zwischen Anfragen
Logger.log(`Processed URL ${i+1}/${urlData.length}: ${url}, Price: ${price}`);
}
updateSheet(prices);
}
/**
* Öffnet die Tabellenkalkulation und ruft die URLs und Selektoren ab.
* @return {Array<{url: string, selector: string}>} Ein Array von Objekten, das URLs und Selektoren enthält.
*/
function getUrlsFromSheet() {
const ss = SpreadsheetApp.openById(SHEET_ID);
const sheet = ss.getSheetByName(SHEET_NAME);
const lastRow = sheet.getLastRow();
if (lastRow < 2) return []; // Leeres Blatt behandeln
const urls = sheet.getRange(2, URLS_COLUMN_ID, lastRow - 1)
.getValues()
.flat(); // Werte als 1D-Array abrufen.
const selectors = sheet.getRange(2, CSS_SELECTOR_COLUMN, lastRow - 1)
.getValues()
.flat(); // Werte als 1D-Array abrufen.
const urlData = [];
for (let i = 0; i < urls.length; i++) {
urlData.push({
url: urls[i],
selector: selectors[i]
});
}
return urlData;
}
/**
* Ruft den HTML-Inhalt einer URL ab.
* @param {string} url Die abzurufende URL.
* @return {string|null} Der HTML-Inhalt oder null, wenn ein Fehler auftritt.
*/
function fetchHtml(url) {
try {
const options = {
method: 'get',
muteHttpExceptions: true,
headers: { // Einige gängige Header hinzugefügt
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36',
'Accept-Language': 'en-US,en;q=0.9',
'Cache-Control': 'no-cache'
}
};
const response = UrlFetchApp.fetch(url, options);
if (response.getResponseCode() === 200) {
return response.getContentText();
} else {
Logger.log(`Error fetching ${url}: ${response.getResponseCode()} - ${response.getContentText()}`);
return null;
}
} catch (error) {
Logger.log(`Error fetching ${url}: ${error}`);
return null;
}
}
/**
* Extrahiert den Preis aus dem HTML mit Cheerio.
* @param {string} html Der HTML-Inhalt.
* @param {string} selector Der zu verwendende CSS-Selektor.
* @return {number|null} Der extrahierte Preis als Zahl oder null, wenn nicht gefunden.
*/
function extractPrice(html, selector) { // Selektor-Parameter hinzugefügt
if (!html || !selector) return null; // Prüfung für Selektor hinzugefügt
try {
const $ = Cheerio.load(html);
let priceText = $(selector).text(); // Bereitgestellten Selektor verwenden
if (!priceText) {
Logger.log("Price element not found using selector: " + selector);
return null;
}
priceText = priceText.replace(/,/g,'.');
let price = parseFloat(priceText.replace(/[^0-9.]/g, ''));
if (isNaN(price)) {
Logger.log("Could not parse price to a number: " + priceText);
return null;
}
return price;
} catch (error) {
Logger.log("Error extracting price: " + error);
return null;
}
}
/**
* Aktualisiert das Google Sheet mit den extrahierten Preisen.
* @param {Array<number|null>} prices Ein Array von Preisen, die in das Sheet geschrieben werden sollen.
*/
function updateSheet(prices) {
if (prices.length === 0) return;
const ss = SpreadsheetApp.openById(SHEET_ID);
const sheet = ss.getSheetByName(SHEET_NAME);
const lastRow = sheet.getLastRow();
const urlsCount = sheet.getRange(2, URLS_COLUMN_ID, lastRow - 1).getValues().flat().length;
if (prices.length !== urlsCount) {
Logger.log(`Number of prices (${prices.length}) does not match the number of URLs (${urlsCount}).`);
return;
}
sheet.getRange(2, PRICE_COLUMN, prices.length, 1).setValues(prices.map(price => [price]));
}
Bevor Sie diesen Code verwenden, vergessen Sie bitte nicht, die Cheerio-Bibliothek einzubinden. Diese Drittanbieter-Bibliothek hilft uns, HTML einfacher zu verarbeiten, und muss manuell zu unserem Projekt hinzugefügt werden. So geht’s:
1ReeQ6WO8kKNxoaA_O0XEQ589cIrRvEBA9qcWpNqdOP17i47u6N9M5Xh0
Die Bibliothek sollte nun im Dialogfeld „Bibliotheken“ (oder unter „Dienste“) erscheinen.
Unser Google Apps Script zur Verfolgung von Produktpreisen besteht aus mehreren Schlüsselfunktionen, die zusammenarbeiten. Lassen Sie uns aufschlüsseln, was jede einzelne tut:
1. main()
main
-Funktion ist der Haupteinstiegspunkt, der den gesamten Prozess des Abrufens und Aktualisierens von Preisen orchestriert. Sie ruft andere Funktionen in der richtigen Reihenfolge auf, um die Aufgabe zu erledigen.getUrlsFromSheet()
, um die Liste der URLs und der zugehörigen CSS-Selektoren aus Ihrer Tabellenkalkulation abzurufen.fetchHtml()
auf, um den Inhalt der Webseite herunterzuladen.extractPrice()
, um den Preis zu finden.Utilities.sleep()
), um eine Überlastung der Webseiten zu vermeiden.updateSheet()
auf, um alle gesammelten Preise zurück in die Tabellenkalkulation zu schreiben.main()
als einen Projektmanager vor. Er erledigt die spezialisierten Aufgaben nicht selbst, kennt aber das Gesamtziel und leitet die Spezialisten (getUrlsFromSheet
, fetchHtml
, extractPrice
, updateSheet
) in der richtigen Reihenfolge an, um sicherzustellen, dass das Projekt (Preisverfolgung) Schritt für Schritt abgeschlossen wird.2. getUrlsFromSheet()
SHEET_ID
).SHEET_NAME
) aus.URLS_COLUMN_ID
).CSS_SELECTOR_COLUMN
).3. fetchHtml()
url
als Eingabe entgegen.UrlFetchApp.fetch()
-Dienst von Google Apps Script, um eine Anfrage an diese URL zu senden.options
(wie User-Agent
-Header), damit die Anfrage eher wie von einem Standard-Webbrowser aussieht, was helfen kann, eine Blockierung durch einige Webseiten zu verhindern.null
zurück.fetchHtml()
als einen Web-Scout vor. Sie geben ihm eine Adresse (URL), und er geht zu diesem Ort im Internet, erstellt eine Kopie des zugrundeliegenden Bauplans der Seite (des HTML) und bringt Ihnen diesen Bauplan zurück. Er versucht sogar, wie ein normaler Besucher auszusehen, um keinen Verdacht zu erregen.4. extractPrice()
html
-Inhalt und den selector
als Eingabe entgegen.Cheerio
-Bibliothek (die zu Ihrem Apps Script-Projekt hinzugefügt werden muss), um das HTML zu parsen, was die Suche erleichtert.selector
, um das genaue HTML-Element zu finden, das den Preis enthält.null
zurück. Andernfalls gibt es den numerischen Preis zurück.extractPrice()
als einen Datendetektiv vor. Er erhält ein großes Dokument (HTML) und einen spezifischen Hinweis (den CSS-Selektor). Er verwendet den Hinweis, um das genaue Datenelement (den Preistext) zu finden, entfernt sorgfältig alle störenden Zeichen (Währungssymbole, Kommas) und meldet den endgültigen gefundenen numerischen Wert.5. updateSheet()
prices
-Array (gesammelt von der main
-Funktion) als Eingabe entgegen.getUrlsFromSheet
).PRICE_COLUMN
) aus, beginnend ab der zweiten Zeile und über die erforderliche Anzahl von Zeilen.[[price1], [price2], ...]
).setValues()
in den ausgewählten Bereich im Sheet.Nachdem Sie den Code in den Skripteditor eingefügt haben:
main()
-Funktion aus. Sie müssen das Skript autorisieren, um auf Ihr Google Sheet zugreifen zu können.extractPrice(html, selector)
ist der webseitenspezifischste Teil. Die Art und Weise, wie Preise im HTML angezeigt werden, variiert von Webseite zu Webseite. Daher müssen Sie möglicherweise den Code innerhalb dieser Funktion anpassen, um der Struktur der von Ihnen verfolgten Webseiten zu entsprechen. Sie müssen wahrscheinlich den HTML-Quellcode der Webseite untersuchen, um einen geeigneten CSS-Selektor zu finden.Dieses automatisierte System spart Ihnen Zeit und Mühe, indem es Produktpreise automatisch für Sie verfolgt. Wenn Sie die Grundlagen seiner Funktionsweise verstehen, können Sie es sogar weiter an Ihre spezifischen Bedürfnisse anpassen.
Der letzte Schritt besteht darin, Ihr Skript so zu planen, dass es jeden Tag automatisch zur gewünschten Zeit ausgeführt wird.
main()
aus.Obwohl UrlFetchApp
von Google Apps Script für viele Webseiten effektiv ist, eignet es sich möglicherweise nicht für stark geschützte Seiten, die Anti-Datenextraktionsmaßnahmen wie CAPTCHAs und IP-Blockaden einsetzen. Der Versuch, diese Schutzmaßnahmen allein mit Apps Script zu umgehen, ist oft unzuverlässig.
Die Datenextraktion von solchen Portalen oder die Anwendung von „Black Hat“-Praktiken erfordert dedizierte Drittanbieterlösungen, die Techniken wie rotierende Proxys und CAPTCHA-Löser verwenden. Beispiele für solche Dienste sind Apify, Bright Data, ParseHub und Scraper API.
Wichtig ist, dass diese Dienste oft in Automatisierungsprozesse von Google Workspace integriert werden können. Das bedeutet, Sie können immer noch einen vollständigen, automatisierten Workflow innerhalb Ihrer Workspace-Infrastruktur aufbauen, auch wenn eine Drittanbieterlösung für die Datenextraktion erforderlich ist. Von diesen Diensten extrahierte Daten können über deren APIs oder Webhooks nahtlos in Google Sheets, Docs oder andere Workspace-Anwendungen eingespeist werden. Es wird dringend empfohlen, die Nutzungsbedingungen von Webseiten und die `robots.txt`-Datei zu respektieren und Daten verantwortungsbewusst und ethisch zu extrahieren.
Google Workspace erlegt Kontingente und Beschränkungen für `UrlFetchApp` auf, um Missbrauch zu verhindern, die Dienststabilität aufrechtzuerhalten und eine faire Nutzung für alle Benutzer zu gewährleisten. Diese Einschränkungen sind beim Entwerfen von Skripten zur Datenextraktion aus dem Web unbedingt zu verstehen:
UrlFetchApp
-Aufrufe oder komplexer Verarbeitung über einen längeren Zeitraum läuft, könnte es dieses Limit erreichen und die Ausführung beenden. Sie können das Skript jedoch oft neu starten, nachdem es aufgrund des Erreichens des Ausführungszeitlimits gestoppt wurde, was Ihnen ermöglicht, größere Datensätze zu verarbeiten oder komplexere Aufgaben in Etappen durchzuführen.UrlFetchApp
-Anfragen Sie innerhalb bestimmter Zeiträume stellen können. Diese Limits sollen verhindern, dass Zielwebseiten mit Anfragen überlastet werden. Zum Zeitpunkt der Erstellung dieses Textes haben kostenlose Google-Konten typischerweise ein tägliches Limit von etwa 20.000 `UrlFetchApp`-Aufrufen, während Google Workspace-Konten im Allgemeinen ein viel höheres Limit von etwa 100.000 Aufrufen pro Tag haben.UrlFetchApp.fetchAll()
einen optimierten Abruf mehrerer URLs. Diese Methode reduziert den Overhead im Vergleich zum sequenziellen Abrufen erheblich, indem sie die Netzwerkkommunikation effizienter handhabt, auch wenn die Anfragen nicht parallel ausgeführt werden.Zusammenfassend lässt sich sagen, dass die Datenextraktion aus dem Web mit Google Apps Script und Google Sheets Unternehmen eine leistungsstarke, zugängliche und vor allem kostenlose Möglichkeit bietet, die Datenerfassung zu automatisieren und wertvolle Erkenntnisse zu gewinnen. Google Apps Script kann sowohl mit kostenlosen Google-Konten als auch mit Google Workspace-Abonnements verwendet werden, was es zu einer kostengünstigen Lösung für Unternehmen jeder Größe macht.
Wenn Sie Google Workspace verwenden, bietet die Nutzung von Apps Script für Ihre Anforderungen an die Datenextraktion aus dem Web darüber hinaus eine unübertroffene Flexibilität und Integration in Ihre bestehenden Geschäftsabläufe. Im Gegensatz zu starren Drittanbieterlösungen, die oft komplexe Integrationen und Datenübertragungsprozesse erfordern, verbindet sich Apps Script nahtlos mit anderen Workspace-Anwendungen.
Wir ermutigen Sie, die Möglichkeiten der Datenextraktion aus dem Web mit Google Apps Script und Sheets für Ihre eigenen Geschäftsanforderungen zu erkunden und das Potenzial der automatisierten Datenerfassung für verbesserte Effizienz und strategische Vorteile zu erschließen. Die Anzahl der Szenarien, in denen diese leistungsstarke Kombination angewendet werden kann, ist praktisch endlos; von der Automatisierung der Marktforschung und Wettbewerbsanalyse bis hin zur Optimierung der Lead-Generierung und Content-Aggregation – nur Ihre Vorstellungskraft begrenzt die potenziellen Anwendungsfälle.
Business process automation expert
1118 Budapest, Ménesi út 24. Hungary
© 2024 bestflow. All rights reserved.