🌐 Web ScrapingPro Plan

SCRAPE_BY_REGEX

Extrahiere Inhalte von einer Webseite mit einem regulären Ausdruck.

Formelsignatur
=SCRAPE_BY_REGEX(url, regex, [removeHtml], [group], [renderJs])

Gibt zurück: string or 2D array (multiple matches returned as separate rows)

Übersicht

SCRAPE_BY_REGEX extrahiert Inhalte von Webseiten, indem es ein reguläres Ausdrucksmuster auf den Seitenquellcode anwendet. Im Gegensatz zu CSS- oder XPath-Selektoren, die die Dokumentstruktur navigieren, arbeitet Regex direkt mit dem rohen HTML- oder Textinhalt und ist einzigartig geeignet für die Extraktion spezifischer Muster wie Preise, Telefonnummern, E-Mail-Adressen, Daten, Produktcodes, API-Schlüssel und jeden anderen Text, der einem vorhersehbaren Format folgt.

Parameter

ParameterTypErforderlichBeschreibung
urlstringJaDie vollständige URL der zu scrapenden Webseite (muss https:// oder http:// enthalten).
regexstringJaReguläres Ausdrucksmuster, das auf den Seiteninhalt angewendet wird. Verwende Standard-Regex-Syntax. Backslashes müssen in Sheets-Formeln verdoppelt werden (z. B. "\\d+" für Ziffern).
removeHtmlbooleanNein (FALSE)Optional. Auf TRUE setzen, um alle HTML-Tags vor dem Anwenden des Regex zu entfernen, sodass nur sichtbarer Textinhalt übrig bleibt. Standard ist FALSE (Regex wird auf rohen HTML-Quellcode angewendet).
groupnumberNein (0)Optional. Die zurückzugebende Erfassungsgruppe. 0 gibt die vollständige Übereinstimmung zurück, 1 gibt die erste Erfassungsgruppe zurück, 2 die zweite usw. Standard ist 0.
renderJsbooleanNeinOptional. Auf TRUE setzen, um JavaScript vor dem Anwenden des Regex zu rendern. Erforderlich für dynamisch geladene Inhalte. Langsamer als der Standardmodus.

Beispiele

1

Alle Preise von einer Seite extrahieren

Matched Dollarbeträge im Format $XX.XX auf der gesamten Seite. Gibt alle Übereinstimmungen als separate Zeilen zurück, sodass du alle Preise auf einen Blick sehen kannst.

fx
=SCRAPE_BY_REGEX("https://store.example.com/deals", "\$[0-9,]+\.\d{2}")

Ausgabe

$49.99
$129.00
$24.95
$89.50
2

E-Mail-Adressen von einer Kontaktseite extrahieren

Verwendet ein Standard-E-Mail-Regex-Muster mit aktiviertem removeHtml, um alle E-Mail-Adressen auf der Seite zu finden, unabhängig davon, wie sie in HTML eingebettet sind.

fx
=SCRAPE_BY_REGEX("https://example.com/contact", "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}", TRUE)

Ausgabe

info@example.com
support@example.com
sales@example.com
3

Werte mit einer Erfassungsgruppe extrahieren

Matched das Muster "SKU: ABC-123" und gibt nur die Erfassungsgruppe zurück (den SKU-Code selbst, ohne das "SKU:"-Präfix). Gruppe 1 isoliert den Wert innerhalb der Klammern.

fx
=SCRAPE_BY_REGEX("https://store.example.com/product/123", "SKU:\s*([A-Z0-9-]+)", TRUE, 1)

Ausgabe

WH-1000XM5
4

Telefonnummern aus Geschäftsverzeichnissen extrahieren

Matched US-Telefonnummern im Format (XXX) XXX-XXXX. Der removeHtml-Parameter stellt sicher, dass Telefonnummern, die über HTML-Tags verteilt sind, korrekt erfasst werden.

fx
=SCRAPE_BY_REGEX("https://directory.example.com/plumbers", "\(\d{3}\)\s*\d{3}-\d{4}", TRUE)

Ausgabe

(555) 123-4567
(555) 987-6543
(555) 246-8135

Anwendungsfälle

E-Commerce

Preisüberwachung bei mehreren Händlern

Verfolge Produktpreise bei verschiedenen Händlern mit Regex-Mustern, die das Preisformat jeder Site matchen. Funktioniert auch dann, wenn sich HTML-Strukturen zwischen Sites unterscheiden, da das Regex auf das Preismuster selbst und nicht auf das umgebende Markup abzielt.

Vertrieb

Lead-Generierung aus Geschäftsverzeichnissen

Extrahiere Kontaktinformationen (E-Mails, Telefonnummern, Adressen) aus Geschäftsverzeichnissen und Gelben Seiten. Regex-Muster matchen zuverlässig strukturierte Datenformate wie Telefonnummern und E-Mails, unabhängig davon, wie sie auf der Seite angezeigt werden.

Bestandsverwaltung

Produktkatalog-SKU-Extraktion

Scrape Produktcodes, SKUs und Modellnummern von Lieferantenkatalogen und Herstellerwebsites. Verwende Regex, um unternehmensspezifische Code-Formate zu matchen (z. B. "XX-####-YY") und umfassende Produktdatenbanken aufzubauen.

Recht

Extraktion von Rechtsdokument-Referenzen

Extrahiere Aktenzeichen, Gesetzesverweise und Vorschriftenzitate aus Rechtsdatenbanken und Gerichts-Websites. Regex matched präzise Zitierformate wie "42 U.S.C. 1983" oder Gerichtsaktenzeichen.

Softwareentwicklung

Versionsnummer- und Changelog-Tracking

Überwache Software-Release-Seiten und Changelogs, um Versionsnummern, Veröffentlichungsdaten und Update-Frequenzen zu verfolgen. Regex-Muster wie "v\d+\.\d+\.\d+" extrahieren zuverlässig semantische Versionsnummern aus jedem Seitenformat.

Marketing-Forschung

Social-Media-Profildatenerfassung

Extrahiere Follower-Zahlen, Engagement-Metriken und Profilinformationen von öffentlichen Social-Media-Seiten. Regex behandelt die verschiedenen Zahlenformate (1.2K, 1,200, 1200), die auf verschiedenen Plattformen verwendet werden.

Profi-Tipps

TIPP

Teste dein Regex immer auf regex101.com, bevor du es im Spreadsheet verwendest. Füge den HTML-Quellcode (oder Textinhalt bei Verwendung von removeHtml) als Test-String ein, um zu überprüfen, ob dein Muster korrekt matched.

TIPP

Verwende nicht-gierige Quantifizierer (*? und +?) anstelle von gierigen (* und +), wenn du Inhalte zwischen Trennzeichen matchst. Zum Beispiel matched "<b>.*?</b>" einzelne Fett-Elemente, während "<b>.*</b>" alles vom ersten <b> bis zum letzten </b> matched.

TIPP

Kombiniere removeHtml mit einfachen Textmustern für die zuverlässigsten Ergebnisse. Regex auf sauberem Text ist viel einfacher zu schreiben und zu warten als Regex auf rohem HTML mit all seinen Attributen und verschachtelten Tags.

TIPP

Verwende Erfassungsgruppen strategisch: Umschließe nur den Teil, den du extrahieren möchtest, mit Klammern und setze den group-Parameter entsprechend. Dies ermöglicht es dir, umgebenden Text als Kontext-Anker zu verwenden, ohne ihn in die Ausgabe einzubeziehen.

TIPP

Für die Extraktion strukturierter Daten wie Tabellen erwäge stattdessen SCRAPE_BY_CSS_PATH oder SCRAPE_BY_XPATH zu verwenden. Regex funktioniert am besten für die Extraktion spezifischer Datenmuster (Zahlen, Codes, E-Mails) anstelle der Navigation in der Dokumentstruktur.

Die Funktion ruft die Ziel-URL ab, entfernt optional HTML-Tags (wenn removeHtml TRUE ist) und wendet dann dein Regex-Muster an. Alle Übereinstimmungen werden zurückgegeben, wobei mehrere Übereinstimmungen als separate Zeilen in deinem Spreadsheet erscheinen. Wenn du Erfassungsgruppen in deinem Muster verwendest, gib mit dem group-Parameter an, welche Gruppe zurückgegeben werden soll, wobei 0 die vollständige Übereinstimmung und 1 die erste Erfassungsgruppe zurückgibt.

Der removeHtml-Parameter ist besonders nützlich, wenn die benötigten Daten über HTML-Tags verteilt sind. Zum Beispiel könnte ein Preis als "<span class="currency">$</span><span class="amount">29.99</span>" gerendert werden, was mit einem einzigen Regex auf rohem HTML schwer zu matchen ist. Das Setzen von removeHtml auf TRUE reduziert dies auf "$29.99", wodurch dein Regex-Muster einfacher und zuverlässiger wird.

Für Websites, die Inhalte mit JavaScript generieren, aktiviere den renderJs-Parameter, um einen Headless-Browser zu verwenden. Dies stellt sicher, dass das Regex auf den vollständig gerenderten Seiteninhalt angewendet wird und nicht nur auf den anfänglichen HTML-Quellcode.

SCRAPE_BY_REGEX glänzt in Szenarien, in denen die Zieldaten keine konsistente HTML-Struktur, aber ein konsistentes Textformat haben. Es ist auch wertvoll als Fallback, wenn CSS- und XPath-Selektoren aufgrund von verschleiertem oder dynamisch generiertem Markup fehlschlagen. Häufige Anwendungen umfassen Preisüberwachung, Extraktion von Kontaktinformationen, Sammlung von SKU und Produktcodes sowie Datenvalidierungs-Workflows.

Häufige Fehler

No matches found

Ursache: Das Regex-Muster matched keinen Inhalt auf der Seite. Dies kann passieren, wenn das Muster zu spezifisch ist, der Inhalt über JavaScript gerendert wird oder HTML-Tags das Text-Matching stören.

Lösung: Versuche removeHtml zu aktivieren, um gegen Klartext anstelle von rohem HTML zu matchen. Überprüfe dein Regex auf regex101.com mit dem Seitenquellcode als Test-String. Wenn der Inhalt dynamisch geladen wird, aktiviere renderJs.

Error: URL and regex are required

Ursache: Einer oder beide erforderlichen Parameter fehlen oder sind leer.

Lösung: Stelle sicher, dass sowohl die URL (einschließlich Protokoll) als auch das Regex-Muster als nicht leere Strings angegeben sind. Überprüfe, dass Zellbezüge auf Zellen mit Werten verweisen.

Error: Invalid regular expression

Ursache: Das Regex-Muster enthält einen Syntaxfehler wie nicht übereinstimmende Klammern, ungültige Escape-Sequenzen oder fehlerhafte Zeichenklassen.

Lösung: Validiere dein Regex auf regex101.com. Häufige Probleme sind nicht escaped Sonderzeichen (Klammern, Eckige Klammern, Punkte benötigen Backslashes, wenn sie wörtlich verwendet werden), nicht übereinstimmende Gruppentrennzeichen und ungültige Quantifizierer-Positionen.

Häufig Gestellte Fragen

In Google Sheets-Formeln werden Strings in doppelte Anführungszeichen gesetzt. Da Regex Backslashes für Sonderzeichen verwendet (\d für Ziffern, \s für Leerzeichen) und der Sheets-Formel-Parser Backslashes nicht als Escape-Zeichen innerhalb von Strings interpretiert, schreibst du sie als einzelne Backslashes: "\d+" matched eine oder mehrere Ziffern. Wenn du unerwartetes Verhalten siehst, versuche das Muster mit removeHtml auf TRUE zu setzen, um den zu matchenden Inhalt zu vereinfachen. Teste dein Regex auf regex101.com, bevor du es in der Funktion verwendest.

Gruppe 0 (Standard) gibt den gesamten gematchten Text zurück. Gruppe 1 gibt nur den Text innerhalb des ersten Klammerpaars in deinem Muster zurück. Zum Beispiel würde mit dem Muster "Preis: (\$[0-9.]+)", angewendet auf den Text "Preis: $29.99", Gruppe 0 "Preis: $29.99" und Gruppe 1 "$29.99" zurückgeben. Dies ist nützlich, wenn du ein Muster für Kontext matchen musst, aber nur einen Teil davon extrahieren möchtest. Du kannst mehrere Erfassungsgruppen haben (Gruppe 2, Gruppe 3 usw.), indem du mehr geklammerte Abschnitte zu deinem Muster hinzufügst.

Aktiviere removeHtml (auf TRUE setzen), wenn: (1) Der Text, den du matchen möchtest, über mehrere HTML-Tags verteilt ist, wie ein Preis, der als "<span>$</span><span>29</span>.<span>99</span>" angezeigt wird. (2) HTML-Tags deine Muster-Matches stören. (3) Du nur gegen den sichtbaren Textinhalt matchen möchtest und alle Markups ignorierst. (4) Dein Regex für Klartext, nicht HTML, entworfen ist. Lass es FALSE, wenn du speziell HTML-Attribute, Tag-Namen oder Markup-Struktur matchen musst.

Die Regex-Engine unterstützt Inline-Flags mit der (?flags)-Syntax am Anfang deines Musters. Verwende "(?i)" für Groß-/Kleinschreibung-insensitives Matching, "(?s)" für Single-Line-Modus (Punkt matched Zeilenumbrüche) und "(?m)" für Multiline-Modus. Zum Beispiel matched "(?i)preis:\s*\$[0-9.]+" Varianten von "Preis:", "PREIS:" und "preis:". Du kannst Flags kombinieren: "(?im)" aktiviert sowohl Groß-/Kleinschreibung-insensitiven als auch Multiline-Modus.

Standardmäßig wird das Regex auf den rohen HTML-Quellcode angewendet, der alle Tags, Attribute und Markups enthält. Zum Beispiel könnte ein Muster wie "[A-Z][a-z]+", das großgeschriebene Wörter matchen soll, auch Tag-Namen wie "Div" oder "Span" matchen. Setze removeHtml auf TRUE, um zuerst alle HTML-Tags zu entfernen, sodass dein Regex nur den sichtbaren Textinhalt sieht. Alternativ mache dein Regex spezifischer, um HTML-Muster auszuschließen.

Die Regex-Engine unterstützt vollständige PCRE-kompatible Syntax einschließlich Lookaheads, Lookbehinds, nicht erfassende Gruppen, Lazy-Quantifizierer und Zeichenklassen. Allerdings können extrem komplexe Muster mit exzessivem Backtracking (wie verschachtelte Quantifizierer wie "(a+)+") Timeout-Fehler verursachen. Halte Muster so einfach und spezifisch wie möglich. Wenn du sehr lange Regex-Muster schreibst, erwäge SCRAPE_BY_CSS_PATH oder SCRAPE_BY_XPATH zu verwenden, um den Inhalt zuerst einzugrenzen, und dann Regex auf das Ergebnis anzuwenden.

REGEXEXTRACT ist eine native Google Sheets-Funktion, die ein Regex auf Text anwendet, der bereits in deinem Spreadsheet ist. SCRAPE_BY_REGEX ruft eine Webseite ab und wendet das Regex auf den Seiteninhalt an, wobei Web-Abruf und Extraktion in einem einzigen Schritt kombiniert werden. Du könntest ähnliche Ergebnisse erzielen, indem du SCRAPE_BY_CSS_PATH verwendest, um den Seitentext zu erhalten, und dann REGEXEXTRACT auf das Ergebnis anwendest, aber SCRAPE_BY_REGEX ist effizienter, da es alles serverseitig in einer Anfrage verarbeitet und mehrere Übereinstimmungen zurückgeben kann.

Standardmäßig matched der Punkt (.) in Regex keine Zeilenumbruchzeichen. Wenn du über Zeilenumbrüche hinweg matchen musst, verwende das Inline-Flag "(?s)" am Anfang deines Musters, um den Single-Line-Modus zu aktivieren, bei dem der Punkt jedes Zeichen einschließlich Zeilenumbrüchen matched. Zum Beispiel matched "(?s)<div class="product">.*?</div>" ein div und seinen gesamten Inhalt über mehrere Zeilen hinweg. Das (?m)-Flag lässt ^ und $ den Anfang/Ende jeder Zeile matchen anstelle des gesamten Strings.

Verwandte Funktionen

Beginnen Sie noch heute mit SCRAPE_BY_REGEX

Installieren Sie Unlimited Sheets, um SCRAPE_BY_REGEX und 41 weitere leistungsstarke Funktionen in Google Sheets zu erhalten.