Zum Hauptinhalt springen

SERPINFO

hinweis

SERPINFO wurde in Version 8.11.0 für Chrome und Firefox als experimentelle Funktion eingeführt und ist seit Version 9 standardmäßig aktiviert.

SERPINFO ist ein System zur Definition und Analyse von Suchmaschinen-Ergebnisseiten (SERPs) unter Verwendung von YAML-Definitionsdateien. Es ermöglicht die Extrahierung strukturierter Informationen aus Suchergebnissen verschiedener Suchmaschinen.

Dateiformat

SERPINFO-Dateien verwenden das YAML-Format mit der folgenden Struktur:

name: SearchEngineName
version: 1.0.0
homepage: https://example.com/
lastModified: 2023-09-01T00:00:00Z

pages:
- name: PageType
matches:
- https://search.example.com/search?*
results:
- root: .result-selector
url: a.link
props:
title: .title
commonProps:
$site: example
$category: web

Top-Level-Eigenschaften

ErforderlichEigenschaftTypBeschreibung
namestringName des SERPINFO
pagesarrayArray der Seitendefinitionen
versionstringVersion des SERPINFO
descriptionstringBeschreibung des SERPINFO
homepagestringHomepage-URL des SERPINFO
lastModifiedstringLetzte Änderungszeit im ISO-Format

Seitendefinition

Jedes Element im Array pages repräsentiert einen bestimmten Typ der Suchergebnisseite (Web, Bilder, Nachrichten usw.):

ErforderlichEigenschaftTypBeschreibung
namestringName der Seitendefinition
matchesarrayArray von übereinstimmenden Mustern zum Einbeziehen von Seiten
resultsarrayArray der Ergebnisdefinitionen
excludeMatchesarrayArray von übereinstimmenden Mustern zum Ausschließen von Seiten
includeRegexstringReguläres Ausdrucksmuster zum Einschließen von Seiten
excludeRegexstringReguläres Ausdrucksmuster zum Ausschließen von Seiten
userAgentstringKann "any", "desktop" oder "mobile" sein
commonPropsobjectAllgemeine Eigenschaften, die für alle Ergebnisse auf dieser Seite gelten
delaynumber or booleanVerzögerung in Millisekunden nach dem Laden der Seite oder boolescher Wert zum Aktivieren/Deaktivieren der Verzögerung

Ergebnisdefinition

Jeder Eintrag im Array results definiert, wie Daten aus einem einzelnen Suchergebnis extrahiert werden sollen:

ErforderlichEigenschaftTypBeschreibung
rootstring or arrayRoot-Befehl zum Auffinden von Ergebniselementen
urlstring or arrayEigenschaftsbefehl zum Extrahieren der URL aus dem Ergebnis
namestringName der Ergebnisdefinition
propsobjectSchlüssel-Wert-Paare, bei denen die Schlüssel Eigenschaftsnamen und die Werte Eigenschaftsbefehle für die Extraktion sind
buttonarraySchaltflächenbefehl zum Hinzufügen von Block-Schaltflächen zu den Ergebnissen
preserveSpacebooleanLegt fest, ob der Layoutbereich blockierter Ergebnisse beibehalten werden soll, um Layoutverschiebungen zu verhindern

Befehle

SERPINFO unterstützt verschiedene Befehle für komplexe Extraktionsszenarien, die in drei Kategorien unterteilt sind:

Root-Befehle

  • <css-selector> oder [selector, <css-selector>]: Elemente finden, die dem CSS-Selektor entsprechen
  • [upward, <level>, <root-command>]: Navigieren Sie in der DOM-Struktur um <level> Schritte von jedem Element nach oben, das mit dem Root-Befehl gefunden wurde

Elementbefehle

  • <css-selector> oder [selector, <css-selector>, <element-command>?]: Element über CSS-Selektor abrufen
  • [upward, <level>, <element-command>?]: Navigieren Sie in der DOM-Struktur um <level> Schritte nach oben

Hinweis: Wenn <element-command> in einem der oben genannten Befehle weggelassen wird, wird implizit das aktuelle Hauptelement verwendet.

Eigenschaftsbefehle

  • <css-selector>: Die Eigenschaft textContent (Standard) oder das Attribut href (bei Verwendung in der URL-Extraktion) des Elements abrufen, das dem CSS-Selektor entspricht
  • [attribute, <name>, <element-command>?]: Attributwert abrufen
  • [property, <name>, <element-command>?]: Eigenschaftswert abrufen
  • [const, <value>]: Eine konstante Zeichenkette zurückgeben
  • [domainToURL, <property-command>]: Domain in eine URL konvertieren
  • [regexInclude, <pattern>, <property-command>]: Nur einschließen, wenn es mit dem regulären Ausdruck übereinstimmt
  • [regexExclude, <pattern>, <property-command>]: Ausschließen, wenn es mit dem regulären Ausdruck übereinstimmt
  • [regexSubstitute, <pattern>, <replacement>, <property-command>]: Durch regulären Ausdruck ersetzen
  • [or, [<property-command>*], <element-command>?]: Mehrere Befehle nacheinander ausprobieren

Hinweis: Wenn <element-command> in einem der oben genannten Befehle weggelassen wird, wird implizit das aktuelle Hauptelement verwendet.

Schaltflächenbefehle

  • [inset, <options>?, <element-command>?]: Eine Schaltfläche an einer bestimmten Position innerhalb des Elements hinzufügen. Optionen umfassen:
    • top: CSS-Länge oder -Prozentsatz
    • right: CSS-Länge oder -Prozentsatz
    • bottom: CSS-Länge oder -Prozentsatz
    • left: CSS-Länge oder -Prozentsatz
    • zIndex: z-Index-Wert (Standard: 1)

Hinweis: Wenn <element-command> weggelassen wird, wird das aktuelle Hauptelement verwendet.

Beispiel

Hier ist ein Beispiel für Bing-Bildsuche:

name: Bing
version: 0.1.0
homepage: https://github.com/ublacklist/builtin#readme
license: MIT
lastModified: 2023-04-05T11:11:20Z

pages:
- name: Images (desktop)
matches:
- https://www.bing.com/images/search?*
userAgent: desktop
results:
- root: [upward, 1, ".iuscp"]
url:
- regexSubstitute
- '"purl":"([^"]+)'
- "\\1"
- [attribute, "m", ".iusc"]
props:
title: [attribute, "title", "li > a"]
button: [inset, { top: "32px", right: 0 }, ".iuscp"]
commonProps:
$site: bing
$category: images

Abonnement

Ihre SERPINFO veröffentlichen

Sie können Ihre SERPINFO-Definitionen mit anderen teilen, indem Sie Ihre YAML-Datei hosten und einen Abonnement-Link bereitstellen.

  1. Erstellen Sie Ihre SERPINFO-YAML-Datei gemäß dem oben beschriebenen Format
  2. Hosten Sie die Datei unter einer öffentlich zugänglichen URL (z. B. GitHub, Ihre eigene Website)
  3. Teilen Sie den Abonnement-Link mit Benutzern in diesem Format:
https://ublacklist.github.io/serpinfo/subscribe?url=<url-encoded-url>

<url-encoded-url> ist die URL Ihrer gehosteten YAML-Datei, die mit URL-Codierung codiert wurde.

SERPINFO abonnieren

So abonnieren Sie eine SERPINFO-Definition:

  1. Klicken Sie auf einen vom Herausgeber bereitgestellten Abonnement-Link
  2. Die Erweiterung öffnet ihre Optionsseite und fordert Sie auf, das Abonnement hinzuzufügen
  3. Bestätigen Sie, dass Sie SERPINFO zu Ihrer Erweiterung hinzufügen möchten
hinweis

Um Abonnement-Links zu verwenden, müssen Sie diese manuell aktivieren. Gehen Sie zur Optionsseite der Erweiterung und aktivieren Sie "SERPINFO-Abonnement-Links aktivieren".

hinweis

Abonnement-Links funktionieren derzeit nicht in Safari.