SlideShare ist ein Scribd-Unternehmen logo
1 von 46
Reguläre Ausdrücke - Scraping Basics


     A (F)Uhl With A Tool...
                                 ...is still a fool!
Wer spricht hier?
                                                     Programmieren (seit 1984)
8 Jahre SEO-Agenturen
                          Web-Entwickler (6 Jahre)
                                                        Linux-Server Admin
      Perl                  SEO (seit 2002)
                   PHP
                                                SEM
                                                               Zocken (PS3)
     Inhouse SEO          Markus Uhl
                                                           FUS RO DAH!!!
 Condé Nast Verlag         SEOdiot
                VOGUE
                                               Death Metal

                GLAMOUR                                 Bass

                     GQ                              E-Gitarre
Was tun wir hier?
Was ihr in 45 Minuten NICHT
            könnt             Was ihr in 45 Minuten könnt

    Ubot oder ein anderes     Reguläre Ausdrücke
    Tool bedienen             verstehen und
                              entwickeln
    Copy&Paste aus der
    Präse für Eure            Mit XPath beliebige
    Aufgaben                  Elemente des DOM-
                              Trees addressieren
    Auf ein Ergebnis mit
    zwei Mausklicks hoffen    Beliebige Inhalte aus
                              beliebigen Quellen
                              scrapen
Reguläre Ausdrücke
Die Basis für algorithmische Analyse von Texten
Reguläre Ausdrücke
Wurden bereits in den 60ern entwickelt
Beschreiben, wie eine zu suchende Zeichenkette
aufgebaut ist („Pattern Matching“)
Ergeben erst mal eine Wahr/Falsch-Aussage (der Text
entspricht diesem Muster oder nicht), können aber auch
Zeichenfolgen extrahieren oder ersetzen
Werden in allen gängigen Programmiersprachen
unterstützt
Können in vielen Programmen wie Notepad++, Screaming
Frog oder OpenOffice verwendet werden. Nur MS Word
hat natürlich einen komplett eigenen „Dialekt“.
Finden auch in der .htaccess von Apache Verwendung
(mod_rewrite)
Auch Google Analytics unterstützt RegExes in den Filtern
Grundregeln
Reguläre Ausdrücke werden zur Verdeutlichung immer in
Schrägstriche gesetzt:
/regex/
Diese müssen in fortgeschrittenen Programmen wie
Google Analytics aber oft nicht mit angegeben werden
Wenn im Ausdruck selbst ein Schrägstrich vorkommt, muss
dieser mit einem Backslash „escaped“ werden:
/AC/DC/
Auch der Backslash selbst muss escaped werden:
//
Das escapen gilt immer, auch wenn die Schrägstriche
aussenrum nicht angegeben werden müssen!
Escaped werden müssen auch alle weiteren
Sonderzeichen, die für die RegEx Bedeutung haben
Modifier
Mit Hilfe angehängter „Modifier“ kann das Verhalten der
RegEx beeinflusst werden
   RegExes sind Case Sensitive. /campixx/ ist nicht
   das gleiche wie /Campixx/. Mit dem Modifier „i“ wird
   der Ausdruck aber Case Insensitive: /campixx/i
   findet dann auch „Campixx“
   Reguläre Ausdrücke arbeiten zeilenweise. Mit den
   Modifiern „s“ und „m“ können mehrzeilige Texte
   verwendet werden (dazu später mehr)
   Beim Extrahieren von sich wiederholenden Mustern
   führt der Modifier „g“ (global) dazu, dass nicht nur der
   erste gefundene Match zurückgegeben wird, sondern
   alle
Zeichenfolgen und
         Wildcards
konkrete Buchstabenfolgen:

/campixx/i – findet „campixx“ und „Campixx“

„.“ - irgendein beliebiges Zeichen außer einem
Zeilenumbruch:

/campi../i – findet „campixx“ und „camping“

Achtung: will man einen echten Punkt finden,
muss man den wie einen Schrägstrich escapen:
/./
Meta-Zeichen
„w“ – ein Buchstabe, eine Zahl oder ein Unterstrich (Word
Character). Konkreter: die Buchstaben a bis z, A bis
Z, Ziffern von 0 bis 9 sowie der Unterstrich „_“.
/campwww/i findet „campixx“, „campino“ und „camping“
„d“ - eine Zahl (Digit)
/campixdddd/i - findet „campix2012“ und
„campix2013“
„s“ – Leerzeichen und Tabs (Spaces)
/campixxs2013/ findet „campixx 2013“, aber nicht
„campixx2013“
Von jedem Meta-Zeichen w, d und s gibt es das genaue
Gegenteil in Großbuchstaben: W, D und S – kann
manchmal hilfreich sein, um Ausdrücke kürzer zu
schreiben
Einfache Wiederholungen
„?“ – das letzte Zeichen kommt nicht oder nur einmal vor
/campi?x?/ - findet „camp“, „campi“, „campx“ und „campix“
Achtung: suchen wir tatsächlich nach einem Fragezeichen,
muss es escaped werden: /Hallo?/

„*“ – das letzte Zeichen kommt nicht oder mehrmals vor
/campix*/ - findet „campi“, „campix“, „campixx“,
„campixxxxxxxxxxx“
Vorsicht: die Kombination „.*“ ist gierig! Und denke ggf. ans
escapen!

„+“ – das letzte Zeichen kommt ein- oder mehrmals vor
/campix+/ - findet „campix“ oder „campixx“, aber nicht
„campi“
Du vermutest richtig – escapen nicht vergessen, wenn Du
Konkrete Wiederholungen
{n} – das Zeichen kommt genau n-mal vor
/campix{2}/ - findet „campixx“ und nichts
anderes

{n,} – das Zeichen kommt mindestens n-mal vor
/campix{2,}/ - findet „campixx“ und
„campixxx“, aber nicht „campix“

{n,m} – das Zeichen kommt mindestens n-mal,
höchstens m-mal vor
/d{4,5}sd+/ - findet alle Telefonnummern
im Format „0179 3872342“ (Vorwahlen haben
immer zwischen 4 und 5 Stellen?)
Backreferences
Zum Weiterverarbeiten von Teilen der Matches
werden Klammern gesetzt
/(d{4,5})s(d+)/ trennt Vorwahl und
Rufnummer
Diese extrahierten Werte, auch „Backreferences“
genannt, stehen dann in Variablen namens 1, 2 etc.
zur Verfügung
/(d{4,5})s(d+)/
-> Vorwahl in 1, Rufnummer in 2
In der .htaccess wird stattdessen $1, $2 etc.
verwendet
RewriteRule /alt/(.*) /neu/$1 [R=301,L]
Vorsicht: diese „/“ stehen für Verzeichnisse, NICHT
Alternativen
„|“ – Pipe-Zeichen
Entweder die linke oder rechte Version
/ma|ey|ie?r/i - findet alle möglichen Schreibweisen des
Namens „Mayer“, „Maier“, „Meier“, „Meyer“, „Mayr“,
„Mair“...
Wenn mehr als ein Buchstabe betroffen ist oder sich die
Alternativen schachteln, müssen Klammern drumrum
helfen
/(handy|mobil)-?nummer/i – egal, ob im Formular nach
der Handy- oder Mobilnummer gefragt wird und egal, ob da
ein Bindestrich dazwischen ist oder nicht...
Beachte: werden die Werte später weiterverwendet,
ändern sich evtl. die Nummern der Backreferences:
/(handy|mobil)-?nummer:s+/(d{4,5})s(d+)/i
Zeichenklassen
„[...]“ – erlaubt nur die angegebenen Zeichen
/d{4,5}[-/s]d+/ - findet Telefonnummern mit den
üblichen Trennzeichen, also egal ob 0179-3872342,
0179/3872342 oder 0179 3872342
Sind in manchen RegEx-Dialekten wichtig für
Umlaute!
w für deutsche Texte ist dann: /[a-zäöüß]/i
„^“ – Negierung. Diese Zeichen dürfen nicht
vorkommen.
Beliebter Trick, um ein gieriges .* zu umgehen
Beispiel: <a href=„home.html“ class=„big“>
/<a href=„(.*)“>/i – findet home.html“
class=“big
/<a href=„([^“]+)“>/i – findet nur home.html
Zeilenumbrüche
„n“
Der Zeilenumbruch ist das einzige Zeichen, das nicht
von „.“ gematcht wird
Soll „.“ auch Zeilenumbrüche matchen, muss der
Modifier „/s“ verwendet werden

Wenn also zum Beispiel ein Link im Quellcode über
zwei Zeilen geht (etwas, das natürlich kein
Programmierer je machen würde *hüstel*):

<a href=„home.html“
class=„big“>
/(<a.*>/ findet den Link nicht!
/(<a.*>/s findet den Link.
Zeilenanfang & -ende
„^“ – Beginn einer Zeile, „$“ – Ende einer Zeile

Beides ist in Verbindung mit mod_rewrite sinnvoll, um spezifische URLs
weiterzuleiten
RewriteRule ^sinn$ /404.html [R=302,L]
Leitet ausschließlich die URL www.domain.de/sinn auf die Nicht-Gefunden-
Seite, nicht aber die Seiten unsinn.html, macht-sinn.html oder das Verzeichnis
/sinnlos

Bei mehrzeiligem Text matchen „^“ und „$“ nur genau einmal – auf die erste
Zeile. Ist das Muster dort nicht vorhanden, wird die RegEx kein Ergebnis
zurückliefern, auch wenn das Muster in späteren Zeilen vorkommt. Will man
mehrere Zeilen untersuchen, muss man den Modifier „/m“ verwenden.

Beispiel: finde alle Absätze im Text, bei denen ich den Punkt am Ende
vergessen habe:
/[^.]$/m

Erweiterung: eine Zeile kann natürlich auch mit Ausrufe-, Fragezeichen oder
Doppelpunkt enden:
/[^.?!:]$/m
Überraschung: nicht jedes Sonderzeichen hat eine Bedeutung in RegExes, so
z.B. Doppelpunkt und Ausrufezeichen.
Word Boundaries
„b“ – Wortgrenze. Der Übergang zwischen
Wortzeichen (w) und Nicht-Wortzeichen (W)
Nützlich, wenn man ganze Worte sucht, keine
Wortbestandteile, zum Beispiel:

/berb/ig – findet alle „er“, aber nicht „Bier“ oder
„Berg“
Merke: Google nutzt b, um Dateinamen zu
zerlegen. Ein Unterstrich „_“ ist als w definiert.
Deswegen findet /bkeywordb/ nichts in
„mein_keyword.jpg“, weil zwischen „mein“ und
„keyword“ kein W und damit keine Word
Boundary ist!
Komplexeres Beispiel
/^((+|00)[1-9]d{0,3}|0 ?[1-9]|(00? ?[1-
9][d ]*))[d-/ ]*$/

Die „perfekte“ Telefonnummern-Regex.
Erwischt alle Schreibweisen
+43 911 6348-24
(030) 86402357
089 4359045
0 22 56 / 4 35 90 45
0030-795-463872
Hausaufgabe: so modifizieren, dass man möglichst
gleich Ländervorwahl (falls vorhanden), Vorwahl und
Rufnummer in 1, 2 und 3 hat.
Ersetzen
Grundform der Syntax, zum Beispiel in PERL:
s/dies/das/

Für andere Programme und Sprachen bitte
Handbuch/Google konsultieren

Hier machen die Backreferences besonders
Sinn. Beispiel: ich habe eine Liste von Namen.
(„Vorname Nachname“). Möchte ich stattdessen
eine telefonbuchartige Liste („Nachname,
Vorname“):

s/(w+)s(w+)/2, 1/g
Massen-Ersetzungen
Praxis-Beispiel: ich habe in einem Verzeichnis
500 Textdateien über Vogue liegen. Konvention
für die Schreibweise ist VOGUE in
Großbuchstaben und außerdem sind Vertipper
wie Vouge oder Voque drin. Wie korrigiere ich
alle Texte?


Lösung: PERL auf der Kommandozeile

perl –p –i –e
„s/bvou?g|qu?eb/VOGUE/ig“ *.txt

(Merkhilfe: „Perl-Kuchen“ – Perl-Pie – Perl –p –i
Zusammenfassung
Mit regulären Ausdrücken kann jedes beliebige
Zeichenmuster in Texten gefunden und extrahiert werden.
Bedenke: Websites bzw. deren Quellcode sind nichts
anderes als Texte!

RegExes sind daher die Grundlage für jegliches Scraping
von Informationen aus einer Webseite

Die Ausdrücke können unter Umständen sehr komplex
werden – aber Übung macht den Meister!

Für ein gewünschtes Zeichenmuster gibt es oft nicht nur
„die eine“ richtige Lösung, sondern unterschiedliche Wege

Über Google findet man sehr viele erprobte Standard-
RegExes, z.B. für Telefonnummern, Email-Adressen, URLs

Wenn Deine RegEx keine Antwort findet, überdenke die
Frage!
Buchtipp
„Reguläre Ausdrücke“

http://amzn.to/XAoqAg
Tipp: RegExp
Tester
Plugin / Applikation für Google Chrome
Online RegEx
Tester
Einfach nach „regex tester“ googeln – es gibt
sie wie Sand am Meer. Keiner sticht besonders
hervor, keiner ist besonders schlecht.
XPath
Routenplaner für den DOM-Tree
XML Path Language XPath
 Abfragesprache, um gezielt Elemente eines
 XML-Dokuments zu addressieren

 Beschreibt bei HTML-Dateien somit den Pfad
 innerhalb des DOM-Trees, um zu einem
 bestimmten Tag zu gelangen

 Grundlage weiterer Standards wie XSLT oder
 XQuery

 Unterstützt auch Reguläre Ausdrücke
XPath Basics
XPath-Ausdrücke sind wie URLs aufgebaut
z.B. /html/title für den <title> oder /html/body/h1 für
die erste H1-Überschrift
In den meisten Fällen verwendet man aber die Such-
Syntax, wobei mit // (= der oberste Knoten) begonnen
wird
z.B. //title statt /html/title oder //h1 statt /html/body/h1
Mehrere Elemente auswählen
z.B. //* für alle Elemente oder //tr für alle Reihen einer
Tabelle
Möchte man ein bestimmtes Element, wird die
gewünschte Nummer des Elements in eckigen
Klammern angegeben
z.B. //h2[2] für die zweite H2-Überschrift
XPath, Attribute und
          RegExes
Gezielt nach Attributen der Tags suchen
z.B. //@class für alle Elemente, die ein „class=...“ besitzen, egal ob
das ein div, eine table, ein img oder sonst was ist. Eselsbrücke:
@ttribut!

Nur Elemente, dessen Attribute bestimmte Werte haben
z.B. //*[@style=‚display:none‘] für alle versteckten Elemente
z.B. //a[@rel=‚nofollow‘]/@href für alle per nofollow verlinkten URLs
Lesart ist einfacher von hinten: gib mir alle @ttribute namens href
von allen Anchor-Tags, dessen @ttribut namens „rel“ den Wert
„nofollow“ hat

Nur Elemente, dessen Attributwerte mit einem bestimmten Text
beginnen
z.B. //div[starts-with(@class, „heading“)] für alle div, deren class mit
„heading“ starten, also class=„heading1“, class=„heading2“ etc.

Nur Elemente, die bestimmte Worte im Text besitzen
z.B. //h2[re:test(., ‘Kapitel|Abschnitt', 'i')] für alle H2-Überschriften, in
denen die Worte „Kapitel“ oder „Abschnitt“ vorkommen.
„Kapitel|Abschnitt“ ist dabei der reguläre Ausdruck und kann alles
beinhalten, was wir im vorigen Kapitel gelernt haben (ohne die
einschließenden Schrägstriche!). Das anschließende „i“ ist der
Nicht nur für Dummies:
   Firebug&Chrome
Firefox: gewünschten Text markieren -> rechte
Maustaste -> Element mit Firebug untersuchen -
> dort rechte Maustaste auf Auswahl -> XPath
kopieren
Chrome: gewünschten Text markieren -> rechte
Maustaste -> Element untersuchen -> rechte
Maustaste auf Auswahl -> Copy XPath
Aber Vorsicht! Beide verwenden numerierte
Angaben, z.B.
/html/body/div[3]/div[3]/div[4]/p[21]. Funktioniert
über mehrere Seiten hinweg also nur dann, wenn
die Struktur wirklich immer gleich ist. Kommt bei
einer anderen Seite ein Abschnitt dazu oder fehlt,
stimmen diese Nummern nicht mehr!
XPath-Referenzen
Bücher sind anders als bei den Regulären Ausdrücken leider
immer für Programmierer von XSLT und XQuery Anwendungen
ausgelegt. XPath ist da immer nur Nebensache und
dementsprechend schlecht dokumentiert.
Passable Adressen: http://manual.calibre-ebook.com/xpath.html
und http://hbraemer.de/XQuery/tutorial/xpath/index.jsp
Scraping Tools
Wie komme ich an den Inhalt von Websites?
Scraping Ehrenkodex
Vermeide DOS-Verhalten!
100 Threads gleichzeitig auf einer Website sind ein
Denial-Of-Service-Angriff.
Teste oft – scrape einmal!
Mach immer 10-15 Stichproben und prüfe, ob wirklich
das rauskommt, was Du willst, bevor Du auf eine
Website losgehst.
Rechne mit Abbrüchen!
Merke Dir abgearbeitete URLs. Bricht das Scraping
ab, fang nicht einfach wieder von vorne an.
Scrape. In. Häppchen.
Geh bei großen Websites Unterverzeichnis für
Unterverzeichnis durch, um Abbrüche zu minimieren.
Tu‘s niemals
„ohne“!
Wann immer Du automatisiert Websites
abfragst, benutze IMMER einen Proxy!
Wechsle am besten die Proxies alle X Minuten.
Scrapebox
Der Name ist NICHT Programm!
Hat bezüglich Scraping nur einen einzigen
Anwendungszweck: URLs aus den Google-
SERPs zu ziehen, macht das aber dafür
perfekt
Article Wizard von Pascal
Landau
Scraping ist im Beta-Stadium, aber schon sehr robust und
zuverlässig.
Anleitung: http://bit.ly/YlweS9
Kann neben RegExes auch XPATH.
Empfehlenswert bis zu einigen tausend URLs.
Ubot
Eher ein Automatisierungstool, um Aufgaben durchzuführen.
Für einfache Scrapes von Tabellen oder ähnlichen Strukturen
aber ausreichend.
Eierlegende Wollmilchsau:
Outwit Hub Pro
Ich habe noch NIE ein schlechter dokumentiertes Stück Software
gesehen!
Dennoch mit Abstand mächtigstes Scraping-Werkzeug, das man
sich out of the box kaufen kann (50$). Dank voller AJAX-
Unterstützung und vieler kleiner Spezialfeatures in dieser Disziplin
sogar deutlich mächtiger als Ubot. Verwendet eigene Marker-
Logik, kann aber natürlich auch RegExes. Empfehlenswert bis zu
Für Hardcore-Scrapes:
                wget
wget
             --recursive
             --no-clobber
             --html-extension
             --domains vogue.de
             --no-parent
                       www.vogue.de/mode/mode-trends/

Speichert den Quelltext aller Seiten entsprechend ihrer URL-Struktur als Datei auf die Festplatte.

Praxistipp: verwende immer die Option „html-extension“, auch wenn die Seiten eigentlich ohne
Endung ausgeliefert werden. Sonst wird wget scheitern, wenn es versucht,
domain.de/ordner/seite zu schreiben, nachdem es schon domain.de/ordner als datei und nicht
als Ordner angelegt hat.

       Vorteile
             Sehr robust: saugt sogar de.wikipedia.org komplett, wenn der Plattenspeicher reicht
             Unattended: kann mit Hilfe von „screen“ auf einer Linux-Kiste laufen und laufen und laufen
             und laufen

       Nachteile
             Seiten werden nur gespeichert. RegEx-Matching muss in einem späteren Schritt (PERL?)
             erfolgen.
             Kann nur statisches HTML, kein AJAX-Gedöns – sieht damit aber auch nur das, was Google
             sieht
             Single Threaded: es wird nur immer eine einzige Anfrage gleichzeitig gestartet, daher
             langsam
Anwendungsbeispiele
Was kann ich alles scrapen und wozu?
Ist alles verpixelt?
Google Analytics, IVW, AdSense, AdServer...
Bestes Tool hierfür: Custom Filter in Screaming
Frog
Sind meine Inhalte vertaggt?
Redakteure „vergessen“ gerne mal, Artikel zu vertaggen
Bestes Tool: je nach Aufbau des Quellcodes entweder Article
Wizard oder Outwit Hub Pro
Graphen in Zahlen umwandeln
Es nervt, wenn jemand tolle Kurven zeigt, aber die Daten dazu
verschweigt.
Wikipedia-Daten
Super Gastartikel dazu von Pascal Landau:
http://www.seokai.com/html-scraping-article-
spinning-praxisbeispiel/
Wie ranken meine
Seitentypen?
Tipp: bau in den Quellcode HTML-Kommentare ein, in
der Du den Seitentyp, das verwendete Template, die
View oder sonstige Kriterien ausgibst. Scrape diese
und setze sie über SVERWEISE (siehe Campixx-
Vortrag 2012) in Beziehung zu Platzierungen oder
Traffic. Rankt irgendein Seitentyp auffallend häufiger
oder schlechter? Warum?
wdf*idf en masse
Scrape doch einfach mal alle wdf*idf-Werte aller Artikel eines
Verzeichnisses. Was man damit anstellen kann? Siehe
SEOdioten-Vortrag auf der Campixx 2014... ;o)
Letzte Worte
A (F)Uhl with a tool...
...still a fool?

Weitere ähnliche Inhalte

Andere mochten auch

eTeachingSzenario
eTeachingSzenarioeTeachingSzenario
eTeachingSzenario
Tanja Braun
 
Unverzagt: Europäische und internationale Rechtsgrundlagen
Unverzagt: Europäische und internationale RechtsgrundlagenUnverzagt: Europäische und internationale Rechtsgrundlagen
Unverzagt: Europäische und internationale Rechtsgrundlagen
Raabe Verlag
 
Schenk, Unverzagt, Harzer: Das Recht für Kunst und Kultur. Kurzdarstellung un...
Schenk, Unverzagt, Harzer: Das Recht für Kunst und Kultur. Kurzdarstellung un...Schenk, Unverzagt, Harzer: Das Recht für Kunst und Kultur. Kurzdarstellung un...
Schenk, Unverzagt, Harzer: Das Recht für Kunst und Kultur. Kurzdarstellung un...
Raabe Verlag
 
Anhaltendes Wachstum im ersten Quartal 2011
Anhaltendes Wachstum im ersten Quartal 2011Anhaltendes Wachstum im ersten Quartal 2011
Anhaltendes Wachstum im ersten Quartal 2011
Faurecia Deutschland
 
Müller: Der Film im Urheberrecht
Müller: Der Film im UrheberrechtMüller: Der Film im Urheberrecht
Müller: Der Film im Urheberrecht
Raabe Verlag
 
Weihnachten in deutschland
Weihnachten in deutschlandWeihnachten in deutschland
Weihnachten in deutschland
Isabel Miguel
 
Ergebniss der Startliteraturrecherche
Ergebniss der StartliteraturrechercheErgebniss der Startliteraturrecherche
Ergebniss der Startliteraturrecherche
StartLiteratur
 
Melichar: Verwertungsgesellschaft WORT
Melichar: Verwertungsgesellschaft WORTMelichar: Verwertungsgesellschaft WORT
Melichar: Verwertungsgesellschaft WORT
Raabe Verlag
 
Scheytt, Koska: Rechtsformen kommunaler Kultureinrichtungen
Scheytt, Koska: Rechtsformen kommunaler KultureinrichtungenScheytt, Koska: Rechtsformen kommunaler Kultureinrichtungen
Scheytt, Koska: Rechtsformen kommunaler Kultureinrichtungen
Raabe Verlag
 
Haupt: Bildende Kunst und Urheberrecht
Haupt: Bildende Kunst und UrheberrechtHaupt: Bildende Kunst und Urheberrecht
Haupt: Bildende Kunst und Urheberrecht
Raabe Verlag
 
Unverzagt: Der Verlagsvertrag
Unverzagt: Der VerlagsvertragUnverzagt: Der Verlagsvertrag
Unverzagt: Der Verlagsvertrag
Raabe Verlag
 
Dr. Christian Antz: Kulturtourismus. Empfehlungen für einen langfristigen Erfolg
Dr. Christian Antz: Kulturtourismus. Empfehlungen für einen langfristigen ErfolgDr. Christian Antz: Kulturtourismus. Empfehlungen für einen langfristigen Erfolg
Dr. Christian Antz: Kulturtourismus. Empfehlungen für einen langfristigen Erfolg
Raabe Verlag
 

Andere mochten auch (17)

eTeachingSzenario
eTeachingSzenarioeTeachingSzenario
eTeachingSzenario
 
Bücher planet slideshow
Bücher planet slideshowBücher planet slideshow
Bücher planet slideshow
 
Unverzagt: Europäische und internationale Rechtsgrundlagen
Unverzagt: Europäische und internationale RechtsgrundlagenUnverzagt: Europäische und internationale Rechtsgrundlagen
Unverzagt: Europäische und internationale Rechtsgrundlagen
 
Schenk, Unverzagt, Harzer: Das Recht für Kunst und Kultur. Kurzdarstellung un...
Schenk, Unverzagt, Harzer: Das Recht für Kunst und Kultur. Kurzdarstellung un...Schenk, Unverzagt, Harzer: Das Recht für Kunst und Kultur. Kurzdarstellung un...
Schenk, Unverzagt, Harzer: Das Recht für Kunst und Kultur. Kurzdarstellung un...
 
2.3 erkunden von formen
2.3   erkunden von formen2.3   erkunden von formen
2.3 erkunden von formen
 
Anhaltendes Wachstum im ersten Quartal 2011
Anhaltendes Wachstum im ersten Quartal 2011Anhaltendes Wachstum im ersten Quartal 2011
Anhaltendes Wachstum im ersten Quartal 2011
 
Müller: Der Film im Urheberrecht
Müller: Der Film im UrheberrechtMüller: Der Film im Urheberrecht
Müller: Der Film im Urheberrecht
 
Weihnachten in deutschland
Weihnachten in deutschlandWeihnachten in deutschland
Weihnachten in deutschland
 
Datamatics Verlagspräsentation (2010)
Datamatics Verlagspräsentation (2010)Datamatics Verlagspräsentation (2010)
Datamatics Verlagspräsentation (2010)
 
Ergebniss der Startliteraturrecherche
Ergebniss der StartliteraturrechercheErgebniss der Startliteraturrecherche
Ergebniss der Startliteraturrecherche
 
Schulerhof Preisliste 2015
Schulerhof Preisliste 2015Schulerhof Preisliste 2015
Schulerhof Preisliste 2015
 
20131128 praesentation ablauf_mitgliedervotum-data
20131128 praesentation ablauf_mitgliedervotum-data20131128 praesentation ablauf_mitgliedervotum-data
20131128 praesentation ablauf_mitgliedervotum-data
 
Melichar: Verwertungsgesellschaft WORT
Melichar: Verwertungsgesellschaft WORTMelichar: Verwertungsgesellschaft WORT
Melichar: Verwertungsgesellschaft WORT
 
Scheytt, Koska: Rechtsformen kommunaler Kultureinrichtungen
Scheytt, Koska: Rechtsformen kommunaler KultureinrichtungenScheytt, Koska: Rechtsformen kommunaler Kultureinrichtungen
Scheytt, Koska: Rechtsformen kommunaler Kultureinrichtungen
 
Haupt: Bildende Kunst und Urheberrecht
Haupt: Bildende Kunst und UrheberrechtHaupt: Bildende Kunst und Urheberrecht
Haupt: Bildende Kunst und Urheberrecht
 
Unverzagt: Der Verlagsvertrag
Unverzagt: Der VerlagsvertragUnverzagt: Der Verlagsvertrag
Unverzagt: Der Verlagsvertrag
 
Dr. Christian Antz: Kulturtourismus. Empfehlungen für einen langfristigen Erfolg
Dr. Christian Antz: Kulturtourismus. Empfehlungen für einen langfristigen ErfolgDr. Christian Antz: Kulturtourismus. Empfehlungen für einen langfristigen Erfolg
Dr. Christian Antz: Kulturtourismus. Empfehlungen für einen langfristigen Erfolg
 

Ähnlich wie A fool with a tool - Scraping Basics

Von Automaten zu Programmen–Parsergeneratoren und Attributgrammatiken
Von Automaten zu Programmen–Parsergeneratoren und AttributgrammatikenVon Automaten zu Programmen–Parsergeneratoren und Attributgrammatiken
Von Automaten zu Programmen–Parsergeneratoren und Attributgrammatiken
Tim Furche
 
FMK 2013 Namenskonventionen, Heike Landschulz
FMK 2013 Namenskonventionen, Heike LandschulzFMK 2013 Namenskonventionen, Heike Landschulz
FMK 2013 Namenskonventionen, Heike Landschulz
Verein FM Konferenz
 

Ähnlich wie A fool with a tool - Scraping Basics (14)

Xtext - und was man damit anstellen kann
Xtext - und was man damit anstellen kannXtext - und was man damit anstellen kann
Xtext - und was man damit anstellen kann
 
A fool with a tool
A fool with a toolA fool with a tool
A fool with a tool
 
#SpeakRoslyn - Die Microsoft .NET Compiler Plattform
#SpeakRoslyn - Die Microsoft .NET Compiler Plattform#SpeakRoslyn - Die Microsoft .NET Compiler Plattform
#SpeakRoslyn - Die Microsoft .NET Compiler Plattform
 
Von Automaten zu Programmen–Parsergeneratoren und Attributgrammatiken
Von Automaten zu Programmen–Parsergeneratoren und AttributgrammatikenVon Automaten zu Programmen–Parsergeneratoren und Attributgrammatiken
Von Automaten zu Programmen–Parsergeneratoren und Attributgrammatiken
 
Tech Talk: Groovy
Tech Talk: GroovyTech Talk: Groovy
Tech Talk: Groovy
 
Ruby on Rails SS09 03
Ruby on Rails SS09 03Ruby on Rails SS09 03
Ruby on Rails SS09 03
 
FMK2015: Reguläre Ausdrücke by Arnold Kegebein
FMK2015: Reguläre Ausdrücke by Arnold KegebeinFMK2015: Reguläre Ausdrücke by Arnold Kegebein
FMK2015: Reguläre Ausdrücke by Arnold Kegebein
 
Php Schulung
Php SchulungPhp Schulung
Php Schulung
 
FMK 2013 Namenskonventionen, Heike Landschulz
FMK 2013 Namenskonventionen, Heike LandschulzFMK 2013 Namenskonventionen, Heike Landschulz
FMK 2013 Namenskonventionen, Heike Landschulz
 
Regular Expressions - eine Einführung
Regular Expressions - eine EinführungRegular Expressions - eine Einführung
Regular Expressions - eine Einführung
 
31. Teffen der .NET User Group Rhein-Neckar mit Robin Sedlaczek - SpeakRoslyn
31. Teffen der .NET User Group Rhein-Neckar mit Robin Sedlaczek - SpeakRoslyn31. Teffen der .NET User Group Rhein-Neckar mit Robin Sedlaczek - SpeakRoslyn
31. Teffen der .NET User Group Rhein-Neckar mit Robin Sedlaczek - SpeakRoslyn
 
C Sharp Einfuehrung Teil 1
C Sharp Einfuehrung Teil 1C Sharp Einfuehrung Teil 1
C Sharp Einfuehrung Teil 1
 
Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg!
Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg!Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg!
Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg!
 
Datenformate und Standards
Datenformate und StandardsDatenformate und Standards
Datenformate und Standards
 

A fool with a tool - Scraping Basics

  • 1. Reguläre Ausdrücke - Scraping Basics A (F)Uhl With A Tool... ...is still a fool!
  • 2. Wer spricht hier? Programmieren (seit 1984) 8 Jahre SEO-Agenturen Web-Entwickler (6 Jahre) Linux-Server Admin Perl SEO (seit 2002) PHP SEM Zocken (PS3) Inhouse SEO Markus Uhl FUS RO DAH!!! Condé Nast Verlag SEOdiot VOGUE Death Metal GLAMOUR Bass GQ E-Gitarre
  • 3. Was tun wir hier? Was ihr in 45 Minuten NICHT könnt Was ihr in 45 Minuten könnt Ubot oder ein anderes Reguläre Ausdrücke Tool bedienen verstehen und entwickeln Copy&Paste aus der Präse für Eure Mit XPath beliebige Aufgaben Elemente des DOM- Trees addressieren Auf ein Ergebnis mit zwei Mausklicks hoffen Beliebige Inhalte aus beliebigen Quellen scrapen
  • 4. Reguläre Ausdrücke Die Basis für algorithmische Analyse von Texten
  • 5. Reguläre Ausdrücke Wurden bereits in den 60ern entwickelt Beschreiben, wie eine zu suchende Zeichenkette aufgebaut ist („Pattern Matching“) Ergeben erst mal eine Wahr/Falsch-Aussage (der Text entspricht diesem Muster oder nicht), können aber auch Zeichenfolgen extrahieren oder ersetzen Werden in allen gängigen Programmiersprachen unterstützt Können in vielen Programmen wie Notepad++, Screaming Frog oder OpenOffice verwendet werden. Nur MS Word hat natürlich einen komplett eigenen „Dialekt“. Finden auch in der .htaccess von Apache Verwendung (mod_rewrite) Auch Google Analytics unterstützt RegExes in den Filtern
  • 6. Grundregeln Reguläre Ausdrücke werden zur Verdeutlichung immer in Schrägstriche gesetzt: /regex/ Diese müssen in fortgeschrittenen Programmen wie Google Analytics aber oft nicht mit angegeben werden Wenn im Ausdruck selbst ein Schrägstrich vorkommt, muss dieser mit einem Backslash „escaped“ werden: /AC/DC/ Auch der Backslash selbst muss escaped werden: // Das escapen gilt immer, auch wenn die Schrägstriche aussenrum nicht angegeben werden müssen! Escaped werden müssen auch alle weiteren Sonderzeichen, die für die RegEx Bedeutung haben
  • 7. Modifier Mit Hilfe angehängter „Modifier“ kann das Verhalten der RegEx beeinflusst werden RegExes sind Case Sensitive. /campixx/ ist nicht das gleiche wie /Campixx/. Mit dem Modifier „i“ wird der Ausdruck aber Case Insensitive: /campixx/i findet dann auch „Campixx“ Reguläre Ausdrücke arbeiten zeilenweise. Mit den Modifiern „s“ und „m“ können mehrzeilige Texte verwendet werden (dazu später mehr) Beim Extrahieren von sich wiederholenden Mustern führt der Modifier „g“ (global) dazu, dass nicht nur der erste gefundene Match zurückgegeben wird, sondern alle
  • 8. Zeichenfolgen und Wildcards konkrete Buchstabenfolgen: /campixx/i – findet „campixx“ und „Campixx“ „.“ - irgendein beliebiges Zeichen außer einem Zeilenumbruch: /campi../i – findet „campixx“ und „camping“ Achtung: will man einen echten Punkt finden, muss man den wie einen Schrägstrich escapen: /./
  • 9. Meta-Zeichen „w“ – ein Buchstabe, eine Zahl oder ein Unterstrich (Word Character). Konkreter: die Buchstaben a bis z, A bis Z, Ziffern von 0 bis 9 sowie der Unterstrich „_“. /campwww/i findet „campixx“, „campino“ und „camping“ „d“ - eine Zahl (Digit) /campixdddd/i - findet „campix2012“ und „campix2013“ „s“ – Leerzeichen und Tabs (Spaces) /campixxs2013/ findet „campixx 2013“, aber nicht „campixx2013“ Von jedem Meta-Zeichen w, d und s gibt es das genaue Gegenteil in Großbuchstaben: W, D und S – kann manchmal hilfreich sein, um Ausdrücke kürzer zu schreiben
  • 10. Einfache Wiederholungen „?“ – das letzte Zeichen kommt nicht oder nur einmal vor /campi?x?/ - findet „camp“, „campi“, „campx“ und „campix“ Achtung: suchen wir tatsächlich nach einem Fragezeichen, muss es escaped werden: /Hallo?/ „*“ – das letzte Zeichen kommt nicht oder mehrmals vor /campix*/ - findet „campi“, „campix“, „campixx“, „campixxxxxxxxxxx“ Vorsicht: die Kombination „.*“ ist gierig! Und denke ggf. ans escapen! „+“ – das letzte Zeichen kommt ein- oder mehrmals vor /campix+/ - findet „campix“ oder „campixx“, aber nicht „campi“ Du vermutest richtig – escapen nicht vergessen, wenn Du
  • 11. Konkrete Wiederholungen {n} – das Zeichen kommt genau n-mal vor /campix{2}/ - findet „campixx“ und nichts anderes {n,} – das Zeichen kommt mindestens n-mal vor /campix{2,}/ - findet „campixx“ und „campixxx“, aber nicht „campix“ {n,m} – das Zeichen kommt mindestens n-mal, höchstens m-mal vor /d{4,5}sd+/ - findet alle Telefonnummern im Format „0179 3872342“ (Vorwahlen haben immer zwischen 4 und 5 Stellen?)
  • 12. Backreferences Zum Weiterverarbeiten von Teilen der Matches werden Klammern gesetzt /(d{4,5})s(d+)/ trennt Vorwahl und Rufnummer Diese extrahierten Werte, auch „Backreferences“ genannt, stehen dann in Variablen namens 1, 2 etc. zur Verfügung /(d{4,5})s(d+)/ -> Vorwahl in 1, Rufnummer in 2 In der .htaccess wird stattdessen $1, $2 etc. verwendet RewriteRule /alt/(.*) /neu/$1 [R=301,L] Vorsicht: diese „/“ stehen für Verzeichnisse, NICHT
  • 13. Alternativen „|“ – Pipe-Zeichen Entweder die linke oder rechte Version /ma|ey|ie?r/i - findet alle möglichen Schreibweisen des Namens „Mayer“, „Maier“, „Meier“, „Meyer“, „Mayr“, „Mair“... Wenn mehr als ein Buchstabe betroffen ist oder sich die Alternativen schachteln, müssen Klammern drumrum helfen /(handy|mobil)-?nummer/i – egal, ob im Formular nach der Handy- oder Mobilnummer gefragt wird und egal, ob da ein Bindestrich dazwischen ist oder nicht... Beachte: werden die Werte später weiterverwendet, ändern sich evtl. die Nummern der Backreferences: /(handy|mobil)-?nummer:s+/(d{4,5})s(d+)/i
  • 14. Zeichenklassen „[...]“ – erlaubt nur die angegebenen Zeichen /d{4,5}[-/s]d+/ - findet Telefonnummern mit den üblichen Trennzeichen, also egal ob 0179-3872342, 0179/3872342 oder 0179 3872342 Sind in manchen RegEx-Dialekten wichtig für Umlaute! w für deutsche Texte ist dann: /[a-zäöüß]/i „^“ – Negierung. Diese Zeichen dürfen nicht vorkommen. Beliebter Trick, um ein gieriges .* zu umgehen Beispiel: <a href=„home.html“ class=„big“> /<a href=„(.*)“>/i – findet home.html“ class=“big /<a href=„([^“]+)“>/i – findet nur home.html
  • 15. Zeilenumbrüche „n“ Der Zeilenumbruch ist das einzige Zeichen, das nicht von „.“ gematcht wird Soll „.“ auch Zeilenumbrüche matchen, muss der Modifier „/s“ verwendet werden Wenn also zum Beispiel ein Link im Quellcode über zwei Zeilen geht (etwas, das natürlich kein Programmierer je machen würde *hüstel*): <a href=„home.html“ class=„big“> /(<a.*>/ findet den Link nicht! /(<a.*>/s findet den Link.
  • 16. Zeilenanfang & -ende „^“ – Beginn einer Zeile, „$“ – Ende einer Zeile Beides ist in Verbindung mit mod_rewrite sinnvoll, um spezifische URLs weiterzuleiten RewriteRule ^sinn$ /404.html [R=302,L] Leitet ausschließlich die URL www.domain.de/sinn auf die Nicht-Gefunden- Seite, nicht aber die Seiten unsinn.html, macht-sinn.html oder das Verzeichnis /sinnlos Bei mehrzeiligem Text matchen „^“ und „$“ nur genau einmal – auf die erste Zeile. Ist das Muster dort nicht vorhanden, wird die RegEx kein Ergebnis zurückliefern, auch wenn das Muster in späteren Zeilen vorkommt. Will man mehrere Zeilen untersuchen, muss man den Modifier „/m“ verwenden. Beispiel: finde alle Absätze im Text, bei denen ich den Punkt am Ende vergessen habe: /[^.]$/m Erweiterung: eine Zeile kann natürlich auch mit Ausrufe-, Fragezeichen oder Doppelpunkt enden: /[^.?!:]$/m Überraschung: nicht jedes Sonderzeichen hat eine Bedeutung in RegExes, so z.B. Doppelpunkt und Ausrufezeichen.
  • 17. Word Boundaries „b“ – Wortgrenze. Der Übergang zwischen Wortzeichen (w) und Nicht-Wortzeichen (W) Nützlich, wenn man ganze Worte sucht, keine Wortbestandteile, zum Beispiel: /berb/ig – findet alle „er“, aber nicht „Bier“ oder „Berg“ Merke: Google nutzt b, um Dateinamen zu zerlegen. Ein Unterstrich „_“ ist als w definiert. Deswegen findet /bkeywordb/ nichts in „mein_keyword.jpg“, weil zwischen „mein“ und „keyword“ kein W und damit keine Word Boundary ist!
  • 18. Komplexeres Beispiel /^((+|00)[1-9]d{0,3}|0 ?[1-9]|(00? ?[1- 9][d ]*))[d-/ ]*$/ Die „perfekte“ Telefonnummern-Regex. Erwischt alle Schreibweisen +43 911 6348-24 (030) 86402357 089 4359045 0 22 56 / 4 35 90 45 0030-795-463872 Hausaufgabe: so modifizieren, dass man möglichst gleich Ländervorwahl (falls vorhanden), Vorwahl und Rufnummer in 1, 2 und 3 hat.
  • 19. Ersetzen Grundform der Syntax, zum Beispiel in PERL: s/dies/das/ Für andere Programme und Sprachen bitte Handbuch/Google konsultieren Hier machen die Backreferences besonders Sinn. Beispiel: ich habe eine Liste von Namen. („Vorname Nachname“). Möchte ich stattdessen eine telefonbuchartige Liste („Nachname, Vorname“): s/(w+)s(w+)/2, 1/g
  • 20. Massen-Ersetzungen Praxis-Beispiel: ich habe in einem Verzeichnis 500 Textdateien über Vogue liegen. Konvention für die Schreibweise ist VOGUE in Großbuchstaben und außerdem sind Vertipper wie Vouge oder Voque drin. Wie korrigiere ich alle Texte? Lösung: PERL auf der Kommandozeile perl –p –i –e „s/bvou?g|qu?eb/VOGUE/ig“ *.txt (Merkhilfe: „Perl-Kuchen“ – Perl-Pie – Perl –p –i
  • 21. Zusammenfassung Mit regulären Ausdrücken kann jedes beliebige Zeichenmuster in Texten gefunden und extrahiert werden. Bedenke: Websites bzw. deren Quellcode sind nichts anderes als Texte! RegExes sind daher die Grundlage für jegliches Scraping von Informationen aus einer Webseite Die Ausdrücke können unter Umständen sehr komplex werden – aber Übung macht den Meister! Für ein gewünschtes Zeichenmuster gibt es oft nicht nur „die eine“ richtige Lösung, sondern unterschiedliche Wege Über Google findet man sehr viele erprobte Standard- RegExes, z.B. für Telefonnummern, Email-Adressen, URLs Wenn Deine RegEx keine Antwort findet, überdenke die Frage!
  • 23. Tipp: RegExp Tester Plugin / Applikation für Google Chrome
  • 24. Online RegEx Tester Einfach nach „regex tester“ googeln – es gibt sie wie Sand am Meer. Keiner sticht besonders hervor, keiner ist besonders schlecht.
  • 26. XML Path Language XPath Abfragesprache, um gezielt Elemente eines XML-Dokuments zu addressieren Beschreibt bei HTML-Dateien somit den Pfad innerhalb des DOM-Trees, um zu einem bestimmten Tag zu gelangen Grundlage weiterer Standards wie XSLT oder XQuery Unterstützt auch Reguläre Ausdrücke
  • 27. XPath Basics XPath-Ausdrücke sind wie URLs aufgebaut z.B. /html/title für den <title> oder /html/body/h1 für die erste H1-Überschrift In den meisten Fällen verwendet man aber die Such- Syntax, wobei mit // (= der oberste Knoten) begonnen wird z.B. //title statt /html/title oder //h1 statt /html/body/h1 Mehrere Elemente auswählen z.B. //* für alle Elemente oder //tr für alle Reihen einer Tabelle Möchte man ein bestimmtes Element, wird die gewünschte Nummer des Elements in eckigen Klammern angegeben z.B. //h2[2] für die zweite H2-Überschrift
  • 28. XPath, Attribute und RegExes Gezielt nach Attributen der Tags suchen z.B. //@class für alle Elemente, die ein „class=...“ besitzen, egal ob das ein div, eine table, ein img oder sonst was ist. Eselsbrücke: @ttribut! Nur Elemente, dessen Attribute bestimmte Werte haben z.B. //*[@style=‚display:none‘] für alle versteckten Elemente z.B. //a[@rel=‚nofollow‘]/@href für alle per nofollow verlinkten URLs Lesart ist einfacher von hinten: gib mir alle @ttribute namens href von allen Anchor-Tags, dessen @ttribut namens „rel“ den Wert „nofollow“ hat Nur Elemente, dessen Attributwerte mit einem bestimmten Text beginnen z.B. //div[starts-with(@class, „heading“)] für alle div, deren class mit „heading“ starten, also class=„heading1“, class=„heading2“ etc. Nur Elemente, die bestimmte Worte im Text besitzen z.B. //h2[re:test(., ‘Kapitel|Abschnitt', 'i')] für alle H2-Überschriften, in denen die Worte „Kapitel“ oder „Abschnitt“ vorkommen. „Kapitel|Abschnitt“ ist dabei der reguläre Ausdruck und kann alles beinhalten, was wir im vorigen Kapitel gelernt haben (ohne die einschließenden Schrägstriche!). Das anschließende „i“ ist der
  • 29. Nicht nur für Dummies: Firebug&Chrome Firefox: gewünschten Text markieren -> rechte Maustaste -> Element mit Firebug untersuchen - > dort rechte Maustaste auf Auswahl -> XPath kopieren Chrome: gewünschten Text markieren -> rechte Maustaste -> Element untersuchen -> rechte Maustaste auf Auswahl -> Copy XPath Aber Vorsicht! Beide verwenden numerierte Angaben, z.B. /html/body/div[3]/div[3]/div[4]/p[21]. Funktioniert über mehrere Seiten hinweg also nur dann, wenn die Struktur wirklich immer gleich ist. Kommt bei einer anderen Seite ein Abschnitt dazu oder fehlt, stimmen diese Nummern nicht mehr!
  • 30. XPath-Referenzen Bücher sind anders als bei den Regulären Ausdrücken leider immer für Programmierer von XSLT und XQuery Anwendungen ausgelegt. XPath ist da immer nur Nebensache und dementsprechend schlecht dokumentiert. Passable Adressen: http://manual.calibre-ebook.com/xpath.html und http://hbraemer.de/XQuery/tutorial/xpath/index.jsp
  • 31. Scraping Tools Wie komme ich an den Inhalt von Websites?
  • 32. Scraping Ehrenkodex Vermeide DOS-Verhalten! 100 Threads gleichzeitig auf einer Website sind ein Denial-Of-Service-Angriff. Teste oft – scrape einmal! Mach immer 10-15 Stichproben und prüfe, ob wirklich das rauskommt, was Du willst, bevor Du auf eine Website losgehst. Rechne mit Abbrüchen! Merke Dir abgearbeitete URLs. Bricht das Scraping ab, fang nicht einfach wieder von vorne an. Scrape. In. Häppchen. Geh bei großen Websites Unterverzeichnis für Unterverzeichnis durch, um Abbrüche zu minimieren.
  • 33. Tu‘s niemals „ohne“! Wann immer Du automatisiert Websites abfragst, benutze IMMER einen Proxy! Wechsle am besten die Proxies alle X Minuten.
  • 34. Scrapebox Der Name ist NICHT Programm! Hat bezüglich Scraping nur einen einzigen Anwendungszweck: URLs aus den Google- SERPs zu ziehen, macht das aber dafür perfekt
  • 35. Article Wizard von Pascal Landau Scraping ist im Beta-Stadium, aber schon sehr robust und zuverlässig. Anleitung: http://bit.ly/YlweS9 Kann neben RegExes auch XPATH. Empfehlenswert bis zu einigen tausend URLs.
  • 36. Ubot Eher ein Automatisierungstool, um Aufgaben durchzuführen. Für einfache Scrapes von Tabellen oder ähnlichen Strukturen aber ausreichend.
  • 37. Eierlegende Wollmilchsau: Outwit Hub Pro Ich habe noch NIE ein schlechter dokumentiertes Stück Software gesehen! Dennoch mit Abstand mächtigstes Scraping-Werkzeug, das man sich out of the box kaufen kann (50$). Dank voller AJAX- Unterstützung und vieler kleiner Spezialfeatures in dieser Disziplin sogar deutlich mächtiger als Ubot. Verwendet eigene Marker- Logik, kann aber natürlich auch RegExes. Empfehlenswert bis zu
  • 38. Für Hardcore-Scrapes: wget wget --recursive --no-clobber --html-extension --domains vogue.de --no-parent www.vogue.de/mode/mode-trends/ Speichert den Quelltext aller Seiten entsprechend ihrer URL-Struktur als Datei auf die Festplatte. Praxistipp: verwende immer die Option „html-extension“, auch wenn die Seiten eigentlich ohne Endung ausgeliefert werden. Sonst wird wget scheitern, wenn es versucht, domain.de/ordner/seite zu schreiben, nachdem es schon domain.de/ordner als datei und nicht als Ordner angelegt hat. Vorteile Sehr robust: saugt sogar de.wikipedia.org komplett, wenn der Plattenspeicher reicht Unattended: kann mit Hilfe von „screen“ auf einer Linux-Kiste laufen und laufen und laufen und laufen Nachteile Seiten werden nur gespeichert. RegEx-Matching muss in einem späteren Schritt (PERL?) erfolgen. Kann nur statisches HTML, kein AJAX-Gedöns – sieht damit aber auch nur das, was Google sieht Single Threaded: es wird nur immer eine einzige Anfrage gleichzeitig gestartet, daher langsam
  • 39. Anwendungsbeispiele Was kann ich alles scrapen und wozu?
  • 40. Ist alles verpixelt? Google Analytics, IVW, AdSense, AdServer... Bestes Tool hierfür: Custom Filter in Screaming Frog
  • 41. Sind meine Inhalte vertaggt? Redakteure „vergessen“ gerne mal, Artikel zu vertaggen Bestes Tool: je nach Aufbau des Quellcodes entweder Article Wizard oder Outwit Hub Pro
  • 42. Graphen in Zahlen umwandeln Es nervt, wenn jemand tolle Kurven zeigt, aber die Daten dazu verschweigt.
  • 43. Wikipedia-Daten Super Gastartikel dazu von Pascal Landau: http://www.seokai.com/html-scraping-article- spinning-praxisbeispiel/
  • 44. Wie ranken meine Seitentypen? Tipp: bau in den Quellcode HTML-Kommentare ein, in der Du den Seitentyp, das verwendete Template, die View oder sonstige Kriterien ausgibst. Scrape diese und setze sie über SVERWEISE (siehe Campixx- Vortrag 2012) in Beziehung zu Platzierungen oder Traffic. Rankt irgendein Seitentyp auffallend häufiger oder schlechter? Warum?
  • 45. wdf*idf en masse Scrape doch einfach mal alle wdf*idf-Werte aller Artikel eines Verzeichnisses. Was man damit anstellen kann? Siehe SEOdioten-Vortrag auf der Campixx 2014... ;o)
  • 46. Letzte Worte A (F)Uhl with a tool... ...still a fool?