SlideShare a Scribd company logo
1 of 55
Download to read offline
Einstieg in Xpath für SEO
Seb Adler | @seoseb
26.08.2021
XML
Auszeichnungssprache
gut strukturiert
besteht aus Nodes
haben immer ein öffnendes und ein schließendes Tag
Nodes können verschachtelt sein
Eltern → Kinder
Geschwister
haben Eigenschaften (Attribut="Wert")
haben Inhalte (= Text Nodes)
Wikipedia-Artikel zu XML
2
XML
<?xml version="1.0" encoding="UTF-8" ?>
<urlset xmlns="http://www.google.com/schemas/sitemap/0.9"> <!-- root node -->
<url> <!-- child node -->
<loc>https://www.sparkasse.de/</loc> <!-- child node mit text node -->
<lastmod>2019-05-31</lastmod> <!-- silbling node -->
<changefreq>daily</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.sparkasse.de/fehlerseite/testseit_startseite.html</loc>
<lastmod>2018-03-27</lastmod>
<changefreq>daily</changefreq>
<priority>0.5</priority>
</url>
</urlset>
→ HTML* funktioniert ähnlich
* HTML5 ist ein vollwertiger XML Dialekt
3
Xpath
Expression Language für XML-Dokumente
gedacht um Teile eines XML Dokumentes zu adressieren
"Path" → Pfad-Ausdruck wird genutzt um Elemente
auszuwählen (z.B.: /Element1/Element2/Element3 )
kann auch auf HTML-Dokumente angewendet werden
4
Xpath ist Deine
Wegbeschreibung zum
gesuchten Element
5
6
7
Xpath
Abfragen laufen immer entlang der Dokumentenstruktur
<element1>
<kind1>
inhalt_1
</kind1>
<kind2 eigenschaft="wert">
inhalt_2
</kind2>
</element1>
Finde den Inhalt von kind2 innerhalb von element1 !
/element1/kind2
Ergebnis:
inhalt_2
8
XML & Xpath sind sehr
strikt
ist die HTML-Struktur nicht top, kann die Xpath-Abfrage
fehlschlagen
Case sensitive ( <div> ist nicht gleich <DIV> )
daher: vorher testen (gleich mehr dazu)
9
XPath & HTML
Was steht im Title?
Welche Bilder gibt es auf der Seite?
Welche Links auf externe Domains gibt es?
Wann wurde der Artikel veröffentlicht?
…
10
Basics, mit denen du schon recht weit kommst
Ausdruck Funktion Beispiel
/
wählt den
Wurzelknoten aus →
absoluter Pfad
/html/head
//
alle Knoten im
Dokument, die (die
darauffolgende)
Bedingung erfüllen
//p
[@ ] wählt Attribute aus
//p[@class]
//p[@class='content_text']
/..
wählt das
Elternelement des
zuvor selektierten
Knotens
//a[@rel='ugc']/..
11
Was, wenn ich die genaue Struktur nicht kenne?
Finde den Inhalt von kind2 innerhalb von irgendeinem Eltern-
Element!
<element1>
<kind1>
inhalt_1
</kind1>
<kind2 eigenschaft="wert">
inhalt_2
</kind2>
</element1>
Xpath: //kind2
Ergebnis: inhalt_2
12
aus dem SEO Alltag
//title
//h1
//h2
//meta[@name='description']/@content
//link[@rel='preconnect']/@href
13
Positionen in einer Reihe
//kind[5] = Nr. 5
//kind[last()] = Letztes Kind
//kind[last()-1] = Vorletztes Kind
//kind[position()<3] = alle Kinder vor Position 3
14
Anwendung
im Browser, Dev Console (direkt am HTML Dokument)
Chrome Addon XPather
Firefox Addon Try Xpath
Webanwendung, besonders praktisch zum Testen von
Schnipseln
xpather.com
Excel (SEO Tools for Excel)
Google Spreadsheets
Screaming Frog SEO Spider (Custom Exctraction, Custom
Search)
15
im Browser
nicht zu empfehlen:
/html/body/main/div[4]/div[1]/div[2]/div/div/div[5]/div/a/img
funktioniert nur bei exakt gleicher Struktur
Browser 16
im Browser
ideal zum Kennenlernen der Seite und zum Testen an
verschiedenen Templates, vor der tatsächlichen Anwendung
1. Seite öffnen
2. DevTools öffnen ( F12 / STRG + SHIFT + I )
3. Konsole in den DevTools öffnen ( ESC , oder im oberen Menü)
Browser 17
Chrome Console 18
Firefox Console 19
im Browser
in der Browser-Konsole werden XPath-Abfragen wie folgt verpackt:
$x("XPATH_AUSDRUCK")
immer doppelte Anführungszeichen!
sonst Probleme bei Text [@rel='canonical']
Browser 20
Beispiel: Firefox
$x("//meta[@content]")
Browser 21
Beispiel: Chrome
$x("//meta[@content]")
Browser 22
im Browser
Browser geben alle Objekte zurück, die auf die Abfrage
passen, inkl. der Browser internen Eigenschaften
kann anstrengend sein & Vorteile bringen
Browser 23
table($x("//img[@alt]"), ['alt', 'width', 'height'])
Browser 24
Xpather Extension
Browser 25
xpather.com
Browser 26
Google Sheets
Importxml Funktion
=Importxml(URL;Xpath;Sprache)
=IMPORTXML($B2;"//div[@class='search-form__total']")
Google Spreadsheets 27
Google Sheets
=IMPORTXML(B18;"//title")
28
Google Sheets
Link zum Sheet
kein JS-Rendering
Google Spreadsheets 29
Excel
Seo Tools for Excel
=XPathOnUrl(url, xpath, attribute, xmlHttpSettings, mode)
wenn ein bestimmtes Attribut gesucht wird, kann es mit dem
attribute Argument abgefragt werden
=XPathOnUrl(url, "//a[@rel='canonical']", "href")
Excel 30
Excel 31
Excel
kein JS Rendering
viele Abfragen lähmen Excel (vorher testen)
Zellbezug macht Serienabfragen extrem einfach
Bsp.: 1. URLs aus Sitemap → 2. Xpath auf URLs
Excel 32
Screaming Frog SEO Spider
große Zahl an (ggf. unbekannten) URLs verarbeiten
Extraktion von Inhalten mit Xpath
Suche nach Inhalten mit Xpath
Excel Export
Screaming Frog 33
Configuration ↳ Custom
Search
Extraction
Screaming Frog 34
Extractions
bietet verschiedene Extraktionsmöglichkeiten
enthaltenes HTML, betroffenes Element, Text im Element,
Funktionsergebnis
Screaming Frog 35
Search
sucht nach Text oder RegEx im Quelltext
Einschränkung der Suche auf bestimmte Elemente durch
Xpath
Bsp.: Nach Änderung, den Text im CTA prüfen
Screaming Frog 36
Und nun?
Crawldaten nachträglich in Excel anreichern
in Screaming Frog filtern, ob bestimmt Elemente enthalten
sind
Über Google Spreadsheets Inhalte von Wettbewerbern
scrapen (ohne Crawler)
IT hat XY implementeirt - ist XY auch überall vorhanden?
Strukturierte Daten - alles da?
Wettbewerbs-Seiten untersuchen
…
37
Vorgehen
1. suche das betreffende Element im Quelltext
2. geh so tief wie möglich in der Struktur
i. verlasse dich nicht auf "Kopieren: Xpath"
ii. schau nach Attributen id="xy" oder rel="xy"
iii. nutze unbedingt einfache Anführungszeichen ' innerhalb
der Ausdrücke und doppelte " für den Xpath
iv. probiere Varianten in der Console oder auf xpather.com
v. strebe den kürzest möglichen, relativen Pfad an
3. teste den Xpath erst an 2 oder 3 URLs in Excel, Spreadsheets
oder Screaming Frog
i. probiere "inner HTML" und "extract HTML Element" aus
4. frei
38
Featured Snippet?
40
Featured Snippet?
<div>
<div> ultra viel gedöns (u.a. das Bild)</div>
<div class="mod"> Featured Snippet Text</div>
<div class="g">Title + URL mit Link</div>
</div>
//*[@class='mod']/..
41
Xpather.com 42
="https://www.google.de/search?q="&A6&"&hl=de" // baut die Query mit dem Keyword
=XPathOnUrl(B6;"//*[@class='mod']/..") // macht die Abfrage über SEO Tools for Excel
43
Auf welchen Seiten haben
wir eigentlich Rechner?
44
Screaming Frog SEO Spider 45
Haben wir überall unsere
Teaserboxen gepflegt?
46
Haben wir überall unsere Teaserboxen
gepflegt?
Wieviele Teaserboxen gibt es?
Fehlt hier ein Link?
welche Seiten werden verlinkt?
47
mögliche XPath-Anweisungen & -Funktionen:
count(//*[contains(@class,'if6_teaserarea')]//a/@href)=3
"true" wenn 3 Elemente vorhanden, sonst "false"(Search)
count(//*[contains(@class,'if6_teaserarea')]//a/@href)
zählt die Elemente, gibt Anzahl zurück (Extraction: Function
Value)
//*[contains(@class,'if6_teaserarea')]//a/@href
gibt Ziel-URLs zurück (Extraction: Text)
Screaming Frog SEO Spider 48
Es gibt noch so viel mehr:
Achsen
Funktionen
Berechnungen
49
Cheat Sheet Tools
Seo Tools For Excel
Deutsch ; ist Englisch ,
zu extrahierender Inhalt kann optional angegeben werden
=XpathOnUrl("http://www.web.de/";"//*[@rel='canonical']";"href")
Google Spreadsheet
=IMPORTXML("http://www.web.de/","//*[@rel='canonical']/@href")
Browser Console
$x("//*[@rel='canonical']/@href")
50
Cheat Sheet Xpath
übergeordnetes Element - zum "Hangeln"
//*[@rel='canonical']/..
Bedingung: "enthält"
//a[contains(@href,'http://')]/@href
negierte Bedingung: "beginnt nicht mit"
//a[not(starts-with(@href,'https'))]
Abfragen kombinieren
//a[contains(@href,'http://')] | //*[contains(@href,'s-immo.de')]
51
Elemente an ihrer Position ansprechen
/buch/kapitel[2]/abschnitt[4]/absatz[17]
Div finden, wenn es mehrere Klassennamen hat
<div class="first react-container usw-usf">
//div[contains(concat(' ',normalize-space(@class),' '),' react-container ')]
Elemente und deren Eigenschaften auf der Browser Console in
einer Tabelle ausgeben
table($x("//img[@alt]"), ['alt', 'width', 'height'])
52
Lesestoff
Xpath
https://librarycarpentry.org/lc-webscraping/02-xpath/index.html
https://www.w3schools.com/xml/xpath_intro.asp
https://www.screamingfrog.co.uk/web-scraping/
https://developer.mozilla.org/en-US/docs/Web/XPath
https://wiki.selfhtml.org/wiki/XML/XSL/XPath
https://devhints.io/xpath
Developer Console
https://www.bitdegree.org/learn/chrome-command-line#xpath
53
Seo Tools for Excel
https://seotoolsforexcel.com/xpathonurl/
Excel
(Excel für Microsoft 365, Excel 2019, Excel 2016, Excel 2013)
https://support.microsoft.com/de-de/office/xmlfiltern-funktion-
4df72efc-11ec-4951-86f5-c1374812f5b7
54
@seoseb
seoseb.de
Sparkassen-Finanzportal
Jobs bei uns

More Related Content

What's hot

Seminar Joomla 1.5 SEF-Mechanismus
Seminar Joomla 1.5 SEF-MechanismusSeminar Joomla 1.5 SEF-Mechanismus
Seminar Joomla 1.5 SEF-MechanismusFabian Becker
 
IPC 2015 Zend Framework 3 Reloaded
IPC 2015 Zend Framework 3 ReloadedIPC 2015 Zend Framework 3 Reloaded
IPC 2015 Zend Framework 3 ReloadedRalf Eggert
 
E2E Tests mit PHP
E2E Tests mit PHPE2E Tests mit PHP
E2E Tests mit PHPkmhusseini
 
Python builds mit ant
Python builds mit antPython builds mit ant
Python builds mit antroskakori
 
WPDB - das unbekannte Objekt
WPDB -  das unbekannte ObjektWPDB -  das unbekannte Objekt
WPDB - das unbekannte Objektfrankstaude
 
Morphia, Spring Data & Co
Morphia, Spring Data & CoMorphia, Spring Data & Co
Morphia, Spring Data & CoTobias Trelle
 
Schöneres Web mit HTML5 + CSS3
Schöneres Web mit HTML5 + CSS3Schöneres Web mit HTML5 + CSS3
Schöneres Web mit HTML5 + CSS3ginettateam
 

What's hot (11)

Seminar Joomla 1.5 SEF-Mechanismus
Seminar Joomla 1.5 SEF-MechanismusSeminar Joomla 1.5 SEF-Mechanismus
Seminar Joomla 1.5 SEF-Mechanismus
 
Mvc public
Mvc publicMvc public
Mvc public
 
IPC 2015 Zend Framework 3 Reloaded
IPC 2015 Zend Framework 3 ReloadedIPC 2015 Zend Framework 3 Reloaded
IPC 2015 Zend Framework 3 Reloaded
 
PHP Sucks?!
PHP Sucks?!PHP Sucks?!
PHP Sucks?!
 
E2E Tests mit PHP
E2E Tests mit PHPE2E Tests mit PHP
E2E Tests mit PHP
 
Python builds mit ant
Python builds mit antPython builds mit ant
Python builds mit ant
 
T3ak12 extbase
T3ak12 extbaseT3ak12 extbase
T3ak12 extbase
 
PHP im High End
PHP im High EndPHP im High End
PHP im High End
 
WPDB - das unbekannte Objekt
WPDB -  das unbekannte ObjektWPDB -  das unbekannte Objekt
WPDB - das unbekannte Objekt
 
Morphia, Spring Data & Co
Morphia, Spring Data & CoMorphia, Spring Data & Co
Morphia, Spring Data & Co
 
Schöneres Web mit HTML5 + CSS3
Schöneres Web mit HTML5 + CSS3Schöneres Web mit HTML5 + CSS3
Schöneres Web mit HTML5 + CSS3
 

Similar to Einstieg in Xpath für SEO (Campixx2021)

Entwickeln mit Wordpress
Entwickeln mit WordpressEntwickeln mit Wordpress
Entwickeln mit WordpressBlogwerk AG
 
Blank Template - less is more #jd13ch
Blank Template - less is more #jd13chBlank Template - less is more #jd13ch
Blank Template - less is more #jd13chAlexander Schmidt
 
Christian heilmann html 5 - das web und der browser als platform
Christian heilmann   html 5 - das web und der browser als platformChristian heilmann   html 5 - das web und der browser als platform
Christian heilmann html 5 - das web und der browser als platformChristian Heilmann
 
Agiles Modellieren mit Domain Specific Languages
Agiles Modellieren mit Domain Specific LanguagesAgiles Modellieren mit Domain Specific Languages
Agiles Modellieren mit Domain Specific LanguagesDominik Hirt
 
I thought you were my friend!
I thought you were my friend!I thought you were my friend!
I thought you were my friend!Mario Heiderich
 
Dokumentation schreiben kann spass machen
Dokumentation schreiben kann spass machenDokumentation schreiben kann spass machen
Dokumentation schreiben kann spass machenSebastian Hempel
 
Web Performance Optimierung (WPO)
Web Performance Optimierung (WPO)Web Performance Optimierung (WPO)
Web Performance Optimierung (WPO)Martin Kliehm
 
Am Ende ist doch alles HTML (Uni Mainz)
Am Ende ist doch alles HTML (Uni Mainz)Am Ende ist doch alles HTML (Uni Mainz)
Am Ende ist doch alles HTML (Uni Mainz)Jens Grochtdreis
 
HTML5 - presentation at W3C-Tag 2009
HTML5 - presentation at W3C-Tag 2009HTML5 - presentation at W3C-Tag 2009
HTML5 - presentation at W3C-Tag 2009Felix Sasaki
 
JSF 2 Kompositkomponenten (JAX 2012)
JSF 2 Kompositkomponenten (JAX 2012)JSF 2 Kompositkomponenten (JAX 2012)
JSF 2 Kompositkomponenten (JAX 2012)Michael Kurz
 
Data Scraping with Excel - Campixx 2013 - Maik Schmidt
Data Scraping with Excel - Campixx 2013 - Maik SchmidtData Scraping with Excel - Campixx 2013 - Maik Schmidt
Data Scraping with Excel - Campixx 2013 - Maik SchmidtMaik Schmidt
 
Einführung XHTML CSS JS // MM 08-11
Einführung XHTML CSS JS // MM 08-11Einführung XHTML CSS JS // MM 08-11
Einführung XHTML CSS JS // MM 08-11Noël Bossart
 
Back to Basics – Webinar 2: Ihre erste MongoDB-Anwendung
Back to Basics – Webinar 2: Ihre erste MongoDB-AnwendungBack to Basics – Webinar 2: Ihre erste MongoDB-Anwendung
Back to Basics – Webinar 2: Ihre erste MongoDB-AnwendungMongoDB
 
Die Zukunft der Webstandards - Webinale 31.05.2010
Die Zukunft der Webstandards - Webinale 31.05.2010Die Zukunft der Webstandards - Webinale 31.05.2010
Die Zukunft der Webstandards - Webinale 31.05.2010Patrick Lauke
 

Similar to Einstieg in Xpath für SEO (Campixx2021) (20)

Backbase Intro
Backbase IntroBackbase Intro
Backbase Intro
 
FLOW3-Workshop F3X12
FLOW3-Workshop F3X12FLOW3-Workshop F3X12
FLOW3-Workshop F3X12
 
Entwickeln mit Wordpress
Entwickeln mit WordpressEntwickeln mit Wordpress
Entwickeln mit Wordpress
 
Blank Template - less is more #jd13ch
Blank Template - less is more #jd13chBlank Template - less is more #jd13ch
Blank Template - less is more #jd13ch
 
Christian heilmann html 5 - das web und der browser als platform
Christian heilmann   html 5 - das web und der browser als platformChristian heilmann   html 5 - das web und der browser als platform
Christian heilmann html 5 - das web und der browser als platform
 
Agiles Modellieren mit Domain Specific Languages
Agiles Modellieren mit Domain Specific LanguagesAgiles Modellieren mit Domain Specific Languages
Agiles Modellieren mit Domain Specific Languages
 
I thought you were my friend!
I thought you were my friend!I thought you were my friend!
I thought you were my friend!
 
Dokumentation schreiben kann spass machen
Dokumentation schreiben kann spass machenDokumentation schreiben kann spass machen
Dokumentation schreiben kann spass machen
 
Web Performance Optimierung (WPO)
Web Performance Optimierung (WPO)Web Performance Optimierung (WPO)
Web Performance Optimierung (WPO)
 
Einfuehrung in ExtJS 4
Einfuehrung in ExtJS 4Einfuehrung in ExtJS 4
Einfuehrung in ExtJS 4
 
XHTML
XHTMLXHTML
XHTML
 
Am Ende ist doch alles HTML (Uni Mainz)
Am Ende ist doch alles HTML (Uni Mainz)Am Ende ist doch alles HTML (Uni Mainz)
Am Ende ist doch alles HTML (Uni Mainz)
 
HTML5 - presentation at W3C-Tag 2009
HTML5 - presentation at W3C-Tag 2009HTML5 - presentation at W3C-Tag 2009
HTML5 - presentation at W3C-Tag 2009
 
Node.js
Node.jsNode.js
Node.js
 
HTML5
HTML5HTML5
HTML5
 
JSF 2 Kompositkomponenten (JAX 2012)
JSF 2 Kompositkomponenten (JAX 2012)JSF 2 Kompositkomponenten (JAX 2012)
JSF 2 Kompositkomponenten (JAX 2012)
 
Data Scraping with Excel - Campixx 2013 - Maik Schmidt
Data Scraping with Excel - Campixx 2013 - Maik SchmidtData Scraping with Excel - Campixx 2013 - Maik Schmidt
Data Scraping with Excel - Campixx 2013 - Maik Schmidt
 
Einführung XHTML CSS JS // MM 08-11
Einführung XHTML CSS JS // MM 08-11Einführung XHTML CSS JS // MM 08-11
Einführung XHTML CSS JS // MM 08-11
 
Back to Basics – Webinar 2: Ihre erste MongoDB-Anwendung
Back to Basics – Webinar 2: Ihre erste MongoDB-AnwendungBack to Basics – Webinar 2: Ihre erste MongoDB-Anwendung
Back to Basics – Webinar 2: Ihre erste MongoDB-Anwendung
 
Die Zukunft der Webstandards - Webinale 31.05.2010
Die Zukunft der Webstandards - Webinale 31.05.2010Die Zukunft der Webstandards - Webinale 31.05.2010
Die Zukunft der Webstandards - Webinale 31.05.2010
 

Einstieg in Xpath für SEO (Campixx2021)