SERPINFO
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
| Erforderlich | Eigenschaft | Typ | Beschreibung |
|---|---|---|---|
| ✓ | name | string | Name des SERPINFO |
| ✓ | pages | array | Array der Seitendefinitionen |
version | string | Version des SERPINFO | |
description | string | Beschreibung des SERPINFO | |
homepage | string | Homepage-URL des SERPINFO | |
lastModified | string | Letzte Änderungszeit im ISO-Format |
Seitendefinition
Jedes Element im Array pages repräsentiert einen bestimmten Typ der Suchergebnisseite (Web, Bilder, Nachrichten usw.):
| Erforderlich | Eigenschaft | Typ | Beschreibung |
|---|---|---|---|
| ✓ | name | string | Name der Seitendefinition |
| ✓ | matches | array | Array von übereinstimmenden Mustern zum Einbeziehen von Seiten |
| ✓ | results | array | Array der Ergebnisdefinitionen |
excludeMatches | array | Array von übereinstimmenden Mustern zum Ausschließen von Seiten | |
includeRegex | string | Reguläres Ausdrucksmuster zum Einschließen von Seiten | |
excludeRegex | string | Reguläres Ausdrucksmuster zum Ausschließen von Seiten | |
userAgent | string | Kann "any", "desktop" oder "mobile" sein | |
commonProps | object | Allgemeine Eigenschaften, die für alle Ergebnisse auf dieser Seite gelten | |
delay | number or boolean | Verzö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:
| Erforderlich | Eigenschaft | Typ | Beschreibung |
|---|---|---|---|
| ✓ | root | string or array | Root-Befehl zum Auffinden von Ergebniselementen |
| ✓ | url | string or array | Eigenschaftsbefehl zum Extrahieren der URL aus dem Ergebnis |
name | string | Name der Ergebnisdefinition | |
props | object | Schlüssel-Wert-Paare, bei denen die Schlüssel Eigenschaftsnamen und die Werte Eigenschaftsbefehle für die Extraktion sind | |
button | array | Schaltflächenbefehl zum Hinzufügen von Block-Schaltflächen zu den Ergebnissen | |
preserveSpace | boolean | Legt 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 EigenschafttextContent(Standard) oder das Attributhref(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 -Prozentsatzright: CSS-Länge oder -Prozentsatzbottom: CSS-Länge oder -Prozentsatzleft: CSS-Länge oder -ProzentsatzzIndex: 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.
- Erstellen Sie Ihre SERPINFO-YAML-Datei gemäß dem oben beschriebenen Format
- Hosten Sie die Datei unter einer öffentlich zugänglichen URL (z. B. GitHub, Ihre eigene Website)
- 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:
- Klicken Sie auf einen vom Herausgeber bereitgestellten Abonnement-Link
- Die Erweiterung öffnet ihre Optionsseite und fordert Sie auf, das Abonnement hinzuzufügen
- Bestätigen Sie, dass Sie SERPINFO zu Ihrer Erweiterung hinzufügen möchten
Um Abonnement-Links zu verwenden, müssen Sie diese manuell aktivieren. Gehen Sie zur Optionsseite der Erweiterung und aktivieren Sie "SERPINFO-Abonnement-Links aktivieren".
Abonnement-Links funktionieren derzeit nicht in Safari.