SCRAPE_BY_XPATH
Extrahiere Inhalte mit XPath-Ausdruck (verwendet Headless-Browser für JS-Rendering).
=SCRAPE_BY_XPATH(url, xpath)Gibt zurück: string or 2D array (multiple matches returned as separate rows)
Übersicht
SCRAPE_BY_XPATH extrahiert Inhalte von Webseiten mithilfe von XPath-Ausdrücken, einer leistungsstarken Abfragesprache zur Navigation in XML- und HTML-Dokumentstrukturen. XPath bietet Fähigkeiten über CSS-Selektoren hinaus, einschließlich der Möglichkeit, im Dokumentbaum nach oben zu navigieren, Elemente nach ihrem Textinhalt auszuwählen, bedingte Logik zu verwenden und Berechnungen innerhalb der Abfrage selbst durchzuführen. Jeder SCRAPE_BY_XPATH-Aufruf verwendet einen Headless-Browser für vollständiges JavaScript-Rendering und ist damit die erste Wahl für das Scrapen moderner dynamischer Websites.
Parameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
url | string | Ja | Die vollständige URL der zu scrapenden Webseite (muss https:// oder http:// enthalten). |
xpath | string | Ja | XPath-Ausdruck, der auf die zu extrahierenden Elemente abzielt. Beispiele: "//h1" (alle h1-Elemente), "//div[@class='content']" (divs mit Klasse "content"), "//a/@href" (alle Link-URLs), "//table//tr/td[2]" (zweite Spalte aller Tabellenzeilen). |
Beispiele
Hauptüberschrift einer Seite extrahieren
Wählt das erste h1-Element auf der Seite aus und gibt seinen Textinhalt zurück. Der doppelte Schrägstrich "//" bedeutet "finde irgendwo im Dokument".
=SCRAPE_BY_XPATH("https://example.com", "//h1")Ausgabe
Example DomainAlle Links mit spezifischem Text abrufen
Verwendet die contains()-Funktion, um Anker-Elemente zu finden, deren Text "Mehr lesen" enthält, und extrahiert ihre href-Attribute. Demonstriert textbasierte XPath-Auswahl, die CSS nicht replizieren kann.
=SCRAPE_BY_XPATH("https://blog.example.com", "//a[contains(text(), 'Read More')]/@href")Ausgabe
| /blog/post-1 |
| /blog/post-2 |
| /blog/post-3 |
Zweite Spalte aus einer Datentabelle extrahieren
Navigiert zu einer bestimmten Tabelle anhand ihrer ID und wählt dann die zweite Zelle (td[2]) aus jeder Zeile aus. Perfekt zum Extrahieren einer einzelnen Spalte tabellarischer Daten.
=SCRAPE_BY_XPATH("https://data.example.com/stats", "//table[@id='stats']//tr/td[2]")Ausgabe
| 1,250 |
| 3,870 |
| 945 |
| 12,300 |
Produktnamen aus Elementen mit spezifischen Datenattributen extrahieren
Zielt nur auf vorrätige Produkte ab, indem nach einem Datenattribut gefiltert wird, und extrahiert dann das h3-Element innerhalb jedes übereinstimmenden Containers.
=SCRAPE_BY_XPATH("https://shop.example.com", "//div[@data-available='true']//h3")Ausgabe
| Bluetooth Speaker |
| Wireless Mouse |
| Phone Stand |
Letzten Absatz auf einer Seite abrufen
Verwendet die XPath-Funktion last(), um nur das letzte Absatzelement auszuwählen. Demonstriert positionsbasierte Auswahlfähigkeiten, die einzigartig für XPath sind.
=SCRAPE_BY_XPATH("https://example.com/about", "(//p)[last()]")Ausgabe
Contact us for more information at info@example.com.Anwendungsfälle
Extraktion von Finanzdaten
Extrahiere Aktienkurse, Finanzkennzahlen und Marktdaten von Finanzportalen und Investor-Relations-Seiten. XPath ermöglicht präzises Anvisieren spezifischer Tabellenzellen und dynamisch geladener Finanz-Widgets.
Regierungsdatenerfassung
Scrape öffentliche Aufzeichnungen, regulatorische Einreichungen und statistische Berichte von Regierungs-Websites. XPath behandelt die komplexen Tabellenstrukturen und verschachtelten Dokumentformate, die üblicherweise auf Regierungsportalen verwendet werden.
Audits für Content-Migration
Prüfe Legacy-Website-Inhalte vor der Migration, indem du Texte, Bilder, Metadaten und interne Links mit XPath extrahierst. Erstelle umfassende Content-Inventare, die alte URLs ihren extrahierten Assets zuordnen.
Vergleich von Wettbewerber-Features
Scrape Preisseiten und Feature-Listen von Wettbewerbern, um Vergleichsmatrizen zu erstellen. Verwende XPath, um Feature-Namen, Verfügbarkeitsindikatoren und Preisstufendetails in organisierte Spreadsheets zu extrahieren.
Nachrichten- und Medienmonitoring
Überwache Nachrichten-Sites und Pressemitteilungsdatenbanken auf Markenerwähnungen, indem du Artikeltitel, Veröffentlichungsdaten und Autorennamen extrahierst. Die textbasierte XPath-Auswahl hilft, Artikel zu filtern, die bestimmte Schlüsselwörter erwähnen.
Profi-Tipps
Verwende den Browser-Konsolen-Shortcut $x("//dein/xpath"), um XPath-Ausdrücke schnell zu testen, bevor du sie in deinem Spreadsheet verwendest. Dies ist schneller als die document.evaluate()-Methode.
Wenn Klassennamen Leerzeichen enthalten (mehrere Klassen), verwende contains(@class, "ziel-klasse") anstelle von @class="ziel-klasse", um Elemente zu matchen, die die Zielklasse unter mehreren Klassen haben.
Verwende den Pipe-Operator |, um mehrere XPath-Ausdrücke in einer einzigen Abfrage zu kombinieren: "//h1 | //h2 | //h3" wählt alle Top-Level-Überschriften aus. Ergebnisse werden in Dokumentreihenfolge zurückgegeben.
Für Tabellen verwende "//table[1]//tr/td[1]", um die erste Spalte zu erhalten, und "//table[1]//tr/td[2]", um die zweite Spalte zu erhalten. Platziere diese in benachbarten Spreadsheet-Spalten, um die Tabellenstruktur zu rekonstruieren.
XPath-Ausdrücke ermöglichen es dir, Elemente mit einer Präzision anzusprechen, die CSS-Selektoren nicht erreichen können. Du kannst Elemente basierend auf ihrem Textinhalt auswählen (//a[contains(text(), "Jetzt kaufen")]), zu Eltern- oder Geschwisterelementen navigieren (//span[@class="price"]/parent::div), mehrere Bedingungen kombinieren (//div[@class="product" and @data-available="true"]) und sogar Funktionen wie position(), last() und string-length() innerhalb deiner Abfragen verwenden.
Da SCRAPE_BY_XPATH immer JavaScript rendert, behandelt es zuverlässig Single-Page-Anwendungen, dynamisch geladene Inhalte, Infinite-Scroll-Bereiche und clientseitig gerenderte Frameworks wie React, Vue und Angular. Dies macht es etwas langsamer als SCRAPE_BY_CSS_PATH im Standardmodus, stellt aber sicher, dass du immer den vollständig gerenderten Seiteninhalt erhältst.
Die Funktion gibt einen einzelnen String zurück, wenn ein Element übereinstimmt, oder ein 2D-Array mit einem Wert pro Zeile, wenn mehrere Elemente übereinstimmen. Dieses Ausgabeformat integriert sich natürlich in Google Sheets und ermöglicht es dir, die Ergebnisse mit FILTER, SORT, UNIQUE und anderen Array-Funktionen für die weitere Datenverarbeitung zu verwenden.
SCRAPE_BY_XPATH ist besonders wertvoll für Datenanalysten, SEO-Profis und Forscher, die präzise Kontrolle darüber benötigen, welche Elemente sie extrahieren, und mit der XPath-Syntax vertraut sind.
Häufige Fehler
No matches foundUrsache: Der XPath-Ausdruck stimmt mit keinem Element auf der gerenderten Seite überein. Dies kann passieren, wenn der Ausdruck einen Syntaxfehler hat, das Zielelement sich innerhalb eines iframe oder Shadow DOM befindet oder die Klassennamen dynamisch generiert werden.
Lösung: Teste das XPath in deiner Browser-Konsole mit $x("dein-xpath-hier"). Überprüfe auf Tippfehler in Elementnamen und Attributwerten. Wenn sich das Element innerhalb eines iframe befindet, versuche die iframe-URL direkt zu scrapen.
Error: URL and XPath are requiredUrsache: Einer oder beide erforderlichen Parameter sind leer oder fehlen.
Lösung: Stelle sicher, dass sowohl die URL (mit Protokoll) als auch der XPath-Ausdruck als nicht leere Strings angegeben sind. Überprüfe, dass Zellbezüge auf Zellen mit Werten verweisen.
Error: XPath evaluation failedUrsache: Der XPath-Ausdruck enthält einen Syntaxfehler, der seine Auswertung verhindert. Häufige Probleme sind nicht übereinstimmende Anführungszeichen, ungültige Funktionsnamen oder fehlerhafte Prädikate.
Lösung: Überprüfe deinen XPath-Ausdruck auf Syntaxfehler. Stelle sicher, dass Anführungszeichen richtig übereinstimmen (verwende einfache Anführungszeichen innerhalb von doppelten Anführungszeichen oder umgekehrt). Überprüfe, ob Funktionsnamen richtig geschrieben sind. Teste den Ausdruck zuerst in der Browser-Konsole.
Häufig Gestellte Fragen
CSS-Selektoren und XPath zielen beide auf HTML-Elemente ab, unterscheiden sich jedoch in ihren Fähigkeiten. CSS-Selektoren sind einfacher und funktionieren gut für die Auswahl von Elementen nach Klasse, ID oder Tag-Name (z. B. ".price", "#header", "h1"). XPath ist leistungsfähiger und kann: im Dokumentbaum nach oben navigieren (ein Elternelement basierend auf einem Kind auswählen), nach Textinhalt filtern (//a[contains(text(), "Kaufen")]), logische Bedingungen verwenden (and/or), nach Position auswählen (//li[3]) und Funktionen wie string-length() und normalize-space() verwenden. Verwende CSS-Selektoren für einfache Extraktion und XPath, wenn du erweiterte Abfragefähigkeiten benötigst.
Ja. Im Gegensatz zu SCRAPE_BY_CSS_PATH, das JavaScript-Rendering als optionalen Parameter bietet, verwendet SCRAPE_BY_XPATH immer einen Headless-Browser, der JavaScript vollständig ausführt, bevor der XPath-Ausdruck ausgewertet wird. Das bedeutet, es funktioniert zuverlässig auf allen Arten von Websites, einschließlich Single-Page-Anwendungen, ist aber langsamer als SCRAPE_BY_CSS_PATH im Standard-(Nicht-JS-)Modus. Wenn Geschwindigkeit eine Priorität ist und die Zielseite kein JavaScript-Rendering erfordert, erwäge stattdessen SCRAPE_BY_CSS_PATH zu verwenden.
Hänge /@attributName an deinen XPath-Ausdruck an. Um zum Beispiel alle Bildquellen zu erhalten: "//img/@src". Um href-Attribute von Links zu erhalten: "//a/@href". Um den Wert eines benutzerdefinierten Datenattributs zu erhalten: "//div/@data-product-id". Du kannst auch Attributextraktion mit Filtern kombinieren: "//a[@class='external']/@href" erhält href-Werte nur von Links mit der Klasse "external".
Ja, das ist eine der mächtigsten Funktionen von XPath. Verwende text(), um Textinhalt zu matchen: "//a[text()='Hier klicken']" matched Links mit dem exakten Text "Hier klicken". Verwende contains() für Teilübereinstimmungen: "//p[contains(text(), 'preis')]" matched Absätze, die das Wort "preis" enthalten. Verwende starts-with() für Präfix-Matching: "//div[starts-with(@class, 'product-')]" matched divs, deren Klasse mit "product-" beginnt. Diese textbasierten Selektoren sind mit CSS-Selektoren nicht verfügbar.
Häufige Ursachen sind: (1) Das Element befindet sich innerhalb eines iframe, das ein separates Dokument ist, das der XPath nicht erreichen kann. (2) Das Element befindet sich innerhalb einer Shadow-DOM-Komponente, die einen gekapselten DOM-Baum erstellt. (3) Die XPath-Syntax hat einen Fehler, wie falsche Anführungszeichen oder Namespace-Probleme. (4) Die Seite verwendet dynamische Klassennamen, die sich bei jedem Laden ändern (häufig bei CSS-in-JS-Bibliotheken). Teste dein XPath in der Browser-Konsole mit document.evaluate() oder dem $x()-Shortcut: $x("//dein/xpath/hier"), um zu überprüfen, ob es die erwarteten Elemente matched.
Die meisten modernen HTML-Seiten erfordern keine Namespace-Behandlung, und der Scraper verarbeitet sie als Standard-HTML. Wenn du jedoch auf Namespace-Probleme stößt (typischerweise bei XML- oder XHTML-Strict-Dokumenten), versuche die local-name()-Funktion in deinem XPath zu verwenden: "//*[local-name()='div']" anstelle von "//div". Dies ignoriert Namespace-Präfixe und matched Elemente nur nach ihrem lokalen Tag-Namen.
XPath bietet viele integrierte Funktionen: position() gibt den Element-Index zurück (//li[position()<=3] erhält die ersten 3 Listenelemente); last() wählt das letzte Element aus ((//p)[last()]); count() zählt Elemente (//ul[count(li)>5] wählt Listen mit mehr als 5 Elementen aus); normalize-space() trimmt Leerzeichen; translate() konvertiert Zeichen; concat() verbindet Strings; und not() negiert Bedingungen (//div[not(@class="hidden")] wählt sichtbare divs aus). Diese Funktionen können für komplexe Abfragen kombiniert werden.
Verwandte Funktionen
Beginnen Sie noch heute mit SCRAPE_BY_XPATH
Installieren Sie Unlimited Sheets, um SCRAPE_BY_XPATH und 41 weitere leistungsstarke Funktionen in Google Sheets zu erhalten.