Google scrapen

Über diesen Artikel auf Golem musste ich letzte Woche etwas schmunzeln. Google versucht mit allen Mitteln das maschinelle auslesen von Daten einer Website (scrapen) zu verhindern und hat viele gute Methoden gefunden das zu unterbinden .. aber manchmal schlagen die halt zu früh zu ..

Warum macht Google das?

Googles Daten sind seine heiligen Kühe. Also auch die Suchergebnisse. Weltweit sind viele Firmen dran interessiert mit ihren Keywords ganz oben in Google zu stehen. Oder zumindest vor dem Wettbewerber. Für umfangreiche Analysen usw. geben die dann auch gern viel Geld aus weil jeder natürlich wissen will wie sich das Ranking verändert. Kein Problem wenn man da nur 2 Keywords beobachten will .. aber wenn man täglich viele hundert Keywords im Auge behalten will wird das entweder aufwendig oder recht teuer.

Google verlangt für 1000 API Calls a 10 Suchergebnisse 5 USD und deckelt das dann auch noch auf 10000 API Calls am Tag. Übersetzt bedeutet das, ich kann für 1000 Keywords pro Tag die Top 100 Suchergebnisse bekommen .. dann ist Schluss. Dafür zahle ich dann aber auch 50 USD.

Grund genug um sich drumrum zu hacken ..

Baut man sich nun in der Programmiersprache seiner Wahl einen Scraper der diese URL aufruft: https://www.google.com/search?oe=utf-8&hl=en&num=100&q=seorch wird Google nach ca. 20 – 50 Anfragen einen Captcha vorschalten und die IP von der die Anfrage kommt wird temporär gesperrt.

Okay jetzt kann ich mir natürlich irgendwelche Proxys zusammensuchen oder vielleicht habe ich auch ein paar Server mit verschiedenen IPs im Netz stehen .. oder ich nutze Dienste wie SEO-Proxies, HideMyAss usw. es gibt viele Möglichkeiten und wahrscheinlich noch mehr Ideen das Problem zu lösen .. alle sind mehr oder weniger aufwändig oder kosten Geld.

Zuviel Aufwand find ich doof!

und außerdem möchte ich auch nicht dafür bezahlen .. also nicht Google 🙂 Darum habe ich mir für SEORCH etwas ausgedacht .. naja .. eigentlich fast 9 Monate drauf gebrütet bis ich es dann mal getestet habe.

Ich habe also einen Scraper für Google Suchergebnisse gebaut und außerdem werden in SEORCH selbst (wenn man ein Keyword eingibt) die Top 30 Google Suchergebnisse angezeigt.

Alles kommt von einer einzigen IP Adresse, keine Proxys, keine Verschleierungstaktiken .. einfach etwas Software und eine Idee.

Seit einigen Wochen ist das jetzt auch produktiv online und ich konnte für jede Useranfrage immer 30 – 100 Google Ergebnisse ausliefern.

Wie ich das gemacht habe möchte ich zurzeit noch nicht veröffentlichen .. weil ich noch nicht sagen kann bis zu welcher Anzahl von Anfragen / pro Stunde das funktioniert und ob ich nicht doch irgendwann gegen eine Wand laufe ..

Parallel dazu habe ich noch einen Google Suggest Scraper gebaut der pro Tag derzeit ca. 1000 Anfragen an Google raushaut .. bis jetzt auch noch sehr stabil ..

Ich beobachte das jetzt mal eine Weile und schreibe dann nochmal was dazu.

SEO Spider .. enlarged

Vor Weihnachten war ich mit einer netten kleinen freelance Arbeit für eine Agentur beschäftigt .. hat auch was mit SEO zu tun .. nur darf ich noch nix drüber erzählen. Mal sehen vielleicht bekommen wir es im Januar / Februar online.

Nach Weihnachten hat mich dann der Seorch Scanner weiter beschäftigt. Anfang Dezember habe ich eine erste BETA online gestellt und dann auch gleich drei Bugfix Releases hinterher geschoben. Mittlerweile läuft er stabil und ich finde kaum noch nennenswerte Fehler.

Für 2013 habe ich mir gleich 2 neue Dinge vorgenommen.

1. WDF*P*IDF

Die Berechnung der Inverse-Document-Frequency. Seorch kann ja schon die WDF (Within-Document-Frequency) eines Keywords berechnen .. nun ist es durchaus interessant zu sehen wie sich das auf die weiteren Dokumente der Website verteilt.

Die inverse Dokumenthäufigkeit stellt die Bedeutung eines Keywords in Bezug auf die Gesamtmenge aller betrachteten Dokumente dar. Je mehr Dokumente es zu einem Keyword gibt, umso schwieriger wird die Erzeugung von Relevanz.

Am besten lest ihr das Ganze bei Karl Kratz.

2. Bigcrawls

Aktuell crawlt der Seorch Scanner, je nach Geschwindigkeit der Website die gecrawlt wird, zwischen 30 und 200 Seiten. Das reicht natürlich nicht und mein nächstes Ziel ist es mehrere 1000 Seiten einer Domain zu crawlen.

Damit habe ich auch testweise schon begonnen .. allerdings habe ich recht schnell bemerkt das ich in ein Speicherproblem laufe. Für jede gecrawlte Website wird ein großes DOM Objekt erzeugt, die Seite neu encodiert und die Daten die ich aus der Seite auslese müssen ja noch gespeichert werden. Das alles frisst natürlich RAM.

Die letzten 2 Tage habe ich damit zugebracht große Crawls zu starten und dann die Speicherauslastung meines Servers zu beobachten.

Ich habe gefühlte 100 Artikel gelesen wie man PHP dazu bringt wenig Speicher zu verbrauchen .. das meiste habe ich getestet und auch wieder verworfen .. da es nur zu marginalen Verbesserungen geführt hat.

Man kann in etwa sagen das pro gecrawlter Seite 1 MB RAM belegt wird (Was ich auch irgendwie für realistisch halte). Das ist unproblematisch bei 100 oder 200 Seiten. Bei tausenden von Seiten ist das aber kritisch da ich ja nicht unbegrenzt RAM zur Verfügung habe.

Meine Idee ist nun das in Chunks zu machen. Also immer nur 50 Seiten auf einmal zu crawlen .. die Ergebnisse in eine Datenbank zu speichern .. und auf Basis der gespeicherten Daten dann die nächsten 50 Seiten zu crawlen.

Ich bin mal gespannt ob das so funktioniert wie ich mir das vorstelle.

SEO Spider (Alpha 2)

Ich habe gerade die zweite Alpha Version von meinem SEO Spider veröffentlicht. In den letzten Tagen habe ich jede Menge Bugs behoben, ein paar neue Features eingebaut und etwas an der Optik gefeilt.

Daneben habe ich noch ein paar hundert verschiedene Websites damit gecrawlt um noch weitere Fehler zu finden.

Meine Lieblingskandidaten waren dabei die Websites von Siemens (WTF), Beiersdorf (Umlaute in Pfadnamen), Continental AG (Meta Refreshs) und wie immer die Telekom (SCHMERZEN).

Neue Features:

  • User Agent Switcher (Google, Yandex, Bing, None)
  • CSV Exports
  • Urls mit mehr als 115 Zeichen
  • zu kurze Texte
  • Analyse der X-Robots und Meta Robots
  • Meta Refreshs werden gefunden
  • interne Links, externe Links
  • Seiten mit mehr als 100 ausgehenden Links
  • Seiten mit wenig eingehenden Links
  • HTTP Hops (301, 302) wird korrekt gefolgt und die Zielseite angezeigt
  • Umlaute in URLs funktionieren
  • die Analyse wird gespeichert -> Permalink
  • Links in SCRIPT Tags wird nicht mehr gefolgt
  • korrektes Encoding der Website (DaumenDrück)
  • prüft auf Mime Type / Dateiendung
  • Spider Modul weiter verbessert

Fertig bin ich immer noch nicht .. aber meine ToDo Liste ist merklich geschrumpft. Vor dem ersten Release möchte ich noch etwas an Optik und Layout arbeiten, auf Dateigrößen prüfen, fehlende ALT Tags ausgeben, Inline Styles und Inline JS anzeigen.

Daneben auch noch doppelte, SEO relevante Tags finden (Canonical, Robots), GET Parameter anzeigen usw.

Trotzdem .. ich finde das Tool funktioniert schon so robust wie ich es mir vorstelle.

Es werden maximal 250 Seiten gecrawlt .. allerdings nur sofern die gecrawlte Website schnell antwortet. Liegt die Antwortzeit der Seite über 4 Sekunden können es z.b auch nur 30 Seiten sein.

Und hier könnt ihr den SEO SPIDER testen.

Einen SEO Spider bauen

SEO Spider? -> Ein Tool mit dem man ne komplette Website nach gängigen SEO Faktoren analysieren kann, Fehler findet und Verbesserungspotential aufdeckt.

Eigentlich hatte ich damit schon Ende letzten Jahres angefangen. Das Herzstück eines SEO Spiders ist der Crawler oder Spider. Eine Software mit der man alle internen Seiten einer Domain anhand von Links findet. Möglichst auch die, die besonders gut versteckt sind.

Jede Suchmaschine setzt so eine Software ein um alle Seiten einer Domain zu finden. So ganz einfach ist das nicht da es viele verschiedene Arten von URLs gibt (GET Parameter), viele verschiedene Arten intern zu verlinken (relativ, absolut), Subdomains und dann noch so lustige Sachen wie den BASE Tag oder relative Verzeichnissprünge. Ich schätze mal das ist ein Grund warum Google es jedem Website Betreiber ermöglicht XML Sitemaps einzureichen. Man crawlt immer ein bisschen gegen Unbekannt!

Natürlich hätte ich meinen Spider auch um einen fertigen OpenSource Crawler bauen können .. aber wo ist denn da der Spass?

Features

So ein SEO Spider muss einige Dinge können:

  • fehlende Title Tags und Meta Descriptions finden
  • doppelte Title Tags und Meta Descriptions finden
  • HTTP Response Codes auslesen
  • fehlende Headlines finden
  • Meta Robots und den Canonical Tag auslesen

daneben wäre es aber auch noch cool wenn er

  • 301ern und 302ern folgt und anzeigt
  • man bestimmte GET Parameter während des Crawls entfernen lassen kann
  • nur bestimmte Verzeichnisse gecrawlt werden
  • Antwortzeiten der der Website ermittelt
  • Cluster und Verzeichnisse zeigt
  • Levels und Ebenen zeigt
  • Dateigrößen
  • usw.

Ist ja toll ..

Seit einigen Wochen sitze ich an so einem Tool .. das Herzstück .. also der Crawler selbst ist mit 500 Zeilen Code sehr schlank geblieben wie ich finde. Der ist nun auch fertig und ich habe ihn schon ziemlich ausführlich getestet. Aktuell baue ich nun die Analyse und Auswertung und bin gerade etwas im Featurewahn.

Darum habe ich beschlossen heute einfach mal eine Alpha Version zu veröffentlichen: http://www.seorch.de/seo-spider.html um zu sehen ob das Errorlog volläuft und vor allem um vielleicht etwas Feedback zu bekommen.

Diverse Features fehlen noch, Bugs sind sicher auch zu finden und die Crawls sind auf max. 250 Seiten beschränkt (abhängig davon wie schnell der gecrawlte Server antwortet).

Credits an racing_fool mit dem die Urversion des Crawlers entstanden ist und an SenSEO der mich mit seinem Crawler wieder angespitzt hat 🙂

Hier könnt ihr den SEORCH SCANNER testen.

Google Venice Update

SEO kommt hier im Blog gerade etwas zu kurz .. aber ich glaube ich muss mal die nächsten Wochen vom coden an SEORCH etwas wegkommen und wieder mehr bloggen.

Venice?

wurde schon Mitte Juni von Google ausgerollt und zielte zu 100% auf lokale Suchergebnisse ab .. diese tauchen nun direkt in den organischen Suchergebnissen auf. Das bedeutet das man von Stadt zu Stadt für den gleichen Suchbegriff unterschiedliche Suchergebnisse erhalten kann.

Google versucht bei jeder Suche den Standort des Users zu ermitteln, zusätzlich ob es ich um eine ortsbezogene Suche handelt (Trigger können hier verschiedene Keywords sein) und blendet dementsprechend Suchergebnisse von lokalen Geschäften, Restaurants, Veranstaltungen usw. ein .. das habt ihr sicher schon gesehen.

Man ging davon aus, daß Google über die IP ungefähr ermitteln konnte wo man sich befand (zumindest in welcher Stadt). Mit Venice wurde nun scheinbar die Genauigkeit gesteigert und Google kann wohl in einigen Fällen bis auf wenige Meter genau ermitteln wo der Suchende sich befindet.

Aha .. und jetzt?

Ganz einfach .. wenn man mit seiner Website oder seinem Produkt eine gewisse Region oder Stadt ansprechen will muss Google das ja irgendwie rausbekommen können.

Die wichtigsten TODOs:

  • der Name der Region oder Stadt muss mehrfach auf den Seiten auftauchen, am besten in TITLE Tags und Headlines
  • eine Landingpage die auf eine bestimmte Region abzielt schadet auch nicht
  • diese Landing Page sollte dann die Adresse der lokalen Niederlassung beinhalten .. am besten nochmal zusätzlich als Microdata oder hCard .. auf jeden Fall gut lesbar im Markup
  • ein ausführlicher Eintrag, mit Link zu Website auf Places for Business ist Pflicht, dieser ist auch Voraussetzung um eine Anzeige in Google+ Local zu bekommen
  • bei Google Mapmaker kann man sich zur Not auch selbst hinzufügen (aber nicht spammen)

Außerdem ..

Sollte man drauf achten das man in Branchenverzeichnissen ebenfalls mit der korrekten Adresse und einem Link zur eigenen Website vertreten ist. Spontan fallen mir da Gelbe Seite, Yelp, Qype usw. ein.

Man sollte peinlichste genau drauf achten das die Adressen die man so im Web verteilt hat nicht voneinander abweichen. Ebenso die lokale Festnetznummer. Bilder als Adresse zu hinterlegen (aus Angst vor Spam) ist Tabu.

Sollte es mehere Möglichkeiten geben wie eine Region oder Stadt benannt ist sollte man eine für sich wählen und überall die gleiche Benamung verwenden.

Wer ganz sicher gehen will reicht noch eine Geo Sitemap ein.

Sich um mindestens 5 Erfahrungsberichte kümmern.

Alle üblichen OnPage und OffPage Regeln beachten die so gerade mal wieder aktuell sind.

Bloß nicht!

  • Postfachadressen oder Handynummern auf der Website verwenden
  • Mehrere Places Einträge faken
  • Unterschiedliche Adressen
  • Mehrere Adressen oder Telefonnummern auf einer Seite
  • Duplicate Content (durch Austausch des Ortsnamens) vermeiden

Penguin Update

Vor ein paar Tagen offiziell angekündigt .. ein paar Worte zum Penguin Update.

SEO bashing

Ist ja gerade so ein bisschen zum Trend geworden .. in diversen Podcasts und Blogs regt man sich pauschal über Suchmaschinenoptimierer auf .. weil die ja die Suchergebnisse manipulieren würden .. Google sieht das etwas anders.

Es gibt diverse Methoden um eine Website für Suchmaschinen zu optimieren .. gute wie schlechte .. und ich kann nichts schlechtes daran finden eine Seite mit guten Inhalten etwas in den SERPs nach vorne zu verhelfen. Ebenso ist nichts schlechtes dabei die Semantik einer Website, die interne Verlinkung und den Quelltext so zugänglich wie möglich zu machen oder einfach guten Inhalt zu produzieren .. das dient eben nicht nur Suchmaschinen sondern in erster Linie dem User (und um den geht es).

Das viele SEOs es dabei völlig übertreiben ist leider offensichtlich .. sonst müsste Google nicht alle paar Monate seinen Algorithmus verändern.

Ich kann aber nichts schlechtes dabei finden wenn Linkkäufer und Black Hats eine auf den Deckel bekommen .. Google auch nicht 🙂

Ziel von Penguin

Das ist recht simpel .. mit der Zeit finden SEOs gewissen Schlupflöcher in Google Suchalgorithmus und bringen diese in Massen zur Anwendung. Ein Beispiel war das offensichtliche Keyword Stuffing um eine Seite eben relevanter als andere erscheinen zu lassen .. das Loch wurde schon vor Jahren geschlossen.

Wem geht es also dieses mal an den Kragen?

  • Webseiten die übernatürlich viele Links von extern bekommen
  • bei extrem vielen Links aus Blogkommentaren
  • Kommentarspam bei dem der Name das Keyword ist
  • wenn immer gleichlautende Linktexte verwendet werden
  • Webseiten die hauptsächlich Links aus Linktausch / Linknetzwerken bekommen
  • Webseiten die ihre Links offensichtlich gekauft haben
  • wenn man Links von als Webspam geflaggten Seiten bekommt

Fazit

Das Penguin Update zielt also vor allem auf unnatürliche Linkprofile ab. Ein Boomerang Effekt für Seiten die in der Vergangenheit viel Geld in plattes Linkbuilding investiert haben. Kostenintensiv war das sicher und ab sofort wird man dafür von Google bestraft .. nur leider kann man ein zusammengekauftes Linkprofil nicht so einfach rückgängig machen wie OnPage SEO Fehler ..

Linkbuilder werden in der Zukunft noch behutsamer vorgehen müssen. Zuviele neue Links in einer Woche .. selbst wenn Keyword Varianten benutzt werden .. können gefährlich sein.

Was will Google?

Vor allem gute, interessante, einzigartige, informative .. Webseiten. Inhalte die für User gemacht sind und die Usern weiterhelfen. Denn die bekommen ihre externen Links mit der Zeit von alleine oder werden in sozialen Netzwerken aufgegriffen und verlinkt. Davon redet Google nun schon ne ganze Weile .. es geht um qualitativ hochwertige Websites .. und jedes weitere Google Update wird in diese Richtung gehen.

Online SEO Check – Reloaded

Ab August und im Herbst habe ich ja munter an meinem (jetzt alten) OnPage SEO Checker entwickelt.

Motivation

Im November hatte ich mich dann entschlossen die komplette Codebase neu zu schreiben. Das lag in erster Linie daran, daß ich den Code besser und modularer machen wollte. Ich habe mein eigenes MVC Pattern implementiert (Danke an Jan der meine Fragen dazu geduldig beantwortet hat), einen (guten?) Debugger gebaut und brav Schnittstellen zwischen den verschiedenen Modulen definiert.

Daneben hatte ich in der alten Version eine kleine PHP Lib eingesetzt um die HTML DOM Analyse zu machen. Allerdings ist die bei extrem dicken Seiten (airliners.net) ausgestiegen .. außerdem hatte ich mich mittlerweile so tief in PHP 5 eingearbeitet das ich es mit Standardmitteln versuchen konnte. Die Selector Engine in der neuen Version läuft nun mit PHP DOM und PHP Simple XML.

Wahrscheinlich hätte ich schon viel früher fertig sein können 🙂 aber 50% der Entwicklungszeit habe ich mir den Kopf drüber zerbrochen wie ich eine guten Code schreibe .. hab mich mit Design Patterns auseinandergesetzt und fremden Code gelesen.

Das SEO Tool – SEORCH

SEORCH hab ich es genannt und mit der Version 0.1 macht es nicht wesentlich mehr als das alte Tool. Es ist etwas schneller geworden .. Umlaute in Keywords tun nun auch, die Analyse ist genauer, das Keyword kann man nun optional eingeben usw.

Garantiert sind auch noch ein paar Bugs zu finden.

Wichtig war mir ein Fundament zu haben auf dem ich aufbauen kann. Ich plane die SEO Analyse in Zukunft noch wesentlich zu erweitern und externe Datenquellen mit aufzunehmen (Google ich komme .. ). Aber bevor ich in den Featurewahn verfalle … die erste Version ist nun also online.

Über jede Art von Feedback freu ich mich.

Aja -> SEORCH – OnPage SEO Tool

OnPage Checker – Suchmaschinenoptimierung

Eigentlich wollte ich ja Anfang des Jahres irgend einen Scraper in node.js schreiben. Allerdings musste ich feststellen das aus meiner Sicht node dafür noch nicht 100% ausgereift ist .. zweites Problem war das Hosting dafür .. irgendwie gabs damals noch keine guten Hoster ..

Im Frühjahr habe ich mich dann viel mit Suchmaschinenoptimierung beschäftigt und viel mit meinen eigenen Seiten herumexperimentiert .. und naja .. die Basis von SEO ist wie wir (fast) alle wissen OnPage Optimierung.

Da meine PHP Skills etwas eingerostet waren habe ich dann beschlossen irgend einen Scraper mit PHP zu schreiben .. erstes Opfer sollte Google sein .. ich wollte Rankings von Websites für spezifische Keywords auslesen .. den Scraper habe ich auch fertig und der liegt hier rum .. nur fand Google das nicht so toll .. die haben nämlich prompt die IP meines Servers gesperrt ..

Okay .. wäre ja nicht so das es mir an Ideen mangelt .. und als nächstes habe ich dann begonnen ein Tool zu schreiben das eine beliebige Website für ein beliebiges Keyword nach OnPage Faktoren untersucht .. ich habe mich grob an der Firefox Extension SenSEO orientiert .. will aber mein eigenes Tool noch ausbauen und erweiteren ..

Knapp 900 Zeilen PHP Code und zwei Wochen später veröffentliche ich heute die Version 0.1 .. und falls sie wer testet und Ideen hat bzw. Bugs findet würde ich mich über ne Rückmeldung freuen.

Hier findet ihr mein SEO OnPage Analyse Tool.

Und ich bin gerade irgendwie stolz das ich doch nicht soviel PHP verlernt hab und bedanke mich noch bei Flo der mir geholfen hat als mich die Regular Expressions fast verrückt gemacht haben 🙂

Update 2012

Das komplette Tool habe ich überarbeitet und man kann es nun hier finden: SEORCH – OnPage SEO Tool

Panda Update in Deutschland angekommen

Letzten Freitag wurde das Panda Update auch in Deutschland ausgerollt .. der Hinweis in Googles Webmastercentral Blog war etwas spärlich .. aber nun ist des da. Über die Auswirkungen des Panda Updates hatte ich vor einiger Zeit schonmal etwas geschrieben.

Zwischen dem ersten ausrollen den Panda Updates und der Version die wir heute haben gab es mittlerweile schon 4 Updates.

  • Panda 1.0 erschien am 24. Februar 2011
  • Panda 2.0 am 11. April
  • Panda 2.1 am 10. Mai
  • Panda 2.2 am 16. Juni
  • Panda 2.3 am 23. Juli
  • Panda in Deutschland am 12. August 2011

Bei der ganzen Panda Show geht es Google in erster Line darum qualitativ hochwertige Inhalte besser zu ranken.

Wie sich das Update nun grob ausgewirkt hat zeigen Sistrix und Searchmetrix anhand von Listen ganz anschaulich.

Verlierer sind die üblichen Verdächtigen die man meist sowieso nicht mehr klickt wenn man sie in den Suchergebnissen findet: ciao.de, gutefrage.net, dooyoo.de, wer-weiss-was.de, yopi.de, preisroboter.de ..

Gewinner sind Seiten die redaktionelle Inhalte bieten (im Zweifelsfall auch gut recherchiert 🙂 ) wie heise.de, welt.de, kino.de, dhd24.com, spiegel.de, golem.de

Das muss aber nun nicht bedeuten das die Verlierer automatisch aus dem sichtbaren Bereich fallen .. teilweise landen sie einfach nicht mehr in den Top 5 oder Top 10 sondern erst auf der zweiten Seite. Außerdem sollte man bei den Zahlen insofern vorsichtig sein, daß es sich um keine längere Erhebung handelt. Fundierte Zahlen kann man meiner Meinung nach erst in 2-4 Wochen erwarten.

Soweit ich das bis jetzt beurteilen kann wirken sich die Änderungen auch geringer aus als in den USA. Google spricht selbst nur von ca. 6-9% der Suchergebnisse die betroffen sind. Die meisten Firmenauftritte und alle mittelmäßigen bis guten Blogs und Themenseiten dürfte dies gar nicht betreffen.

Wird aber vielleicht ganz lustig das Google Forum zum Thema Ranking in den nächsten Wochen zu beobachten .. immerhin ist es durchaus möglich das Google mit dem Panda Seiten schlechter rankt die das nicht verdient haben ..

Ich denke in 2-3 Wochen werde ich mir das genauer anschauen und dann nochmal zusammenfassen was Panda so alles angestellt hat.