Google Keyword Ranking Check mit Python

Google Keyword Ranking CheckUm die aktuelle Plazierung der eigenen Webseite bei verschiedenen Keywords zu ermittel gib es verschiedene kostenpflichtige Google Keyword Ranking Check Tools oder online Dienstleister im Internet. Da oft die Investition bei einer kleinen Webseite nicht lohnt ist eine eigene Lösung hier klar im Vorteil.

In diesem Tutorial wird ein kleines Script vorgestellt mit welchen die Position von Keyword ganz einfach nach den Prinzip „Bei Google eingeben und Position ablesen“ realisiert wird. Für unser Google Keyword Ranking Check Script verwenden wir Python damit sollte dies auf eigentlich allen Plattformen auf den Python installiert ist ohne Probleme lauffähig sein.

Voraussetzung für diese Tutorial ist ein lauffähiges Python 3. Wie man ein solches Virtual Environment aufsetzt wird in diesem Artikel „Python 3.5 und virtualenv installieren“ beschrieben.

Installation von Python robobrowser

Nachdem die Vorraussetzungen geschaffen worden sind installieren wir uns Python Paket robobrowser. Das Paket robobrowser ist eine Python-Bibliothek für das Browsen im Web. Robobrowser verhält sich wie ein Browser damit kann man „Web Scraping“ durchführen um z.B. seine Web-Applikationen automatisiert zu prüfen.

Installiert wird das Paket mit pip. Dazu „betreten“ wir unser Virtual Environment und führen folgendes aus.

pip install robobrowser
Collecting robobrowser
  Using cached robobrowser-0.5.3.tar.gz
Collecting beautifulsoup4>=4.3.2 (from robobrowser)
  Using cached beautifulsoup4-4.6.0-py3-none-any.whl
...
Building wheels for collected packages: robobrowser
  Running setup.py bdist_wheel for robobrowser ... done
  Stored in directory: /Users/Uwe/Library/Caches/pip/wheels/82/e4/a0/394c2b3a4ea3b0ede4ee65cc739d582b6a43f5d37d6dddc100
Successfully built robobrowser
Installing collected packages: beautifulsoup4, chardet, idna, urllib3, certifi, requests, six, Werkzeug, robobrowser
Successfully installed Werkzeug-0.12.2 beautifulsoup4-4.6.0 certifi-2017.7.27.1 chardet-3.0.4 idna-2.6 requests-2.18.4 robobrowser-0.5.3 six-1.11.0 urllib3-1.22

Nachdem alle Abhängigkeiten erfolgreich installiert sind, können wir nun mit diesem Script unser Keyword-Rankging bestimmen.

Python Google Keyword Ranking Check

Dazu legen wir Datei ranking.py an fügen folgenden Inhalt ein.

#!/usr/bin/env python

import sys
import re
import random
from robobrowser import RoboBrowser

sitename = sys.argv[1]
keyword = "+".join(sys.argv[2:])

print("site: %s keyword: %s" % (sitename, keyword))

agent = ['Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:54.0) Gecko/20100101 Firefox/54.0',
         'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36',
         'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0',
         'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36',
         'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0']

parser = 'html.parser'

browser = RoboBrowser(history=False,
                      user_agent=random.choice(agent),
                      parser=parser)

browser.open('https://www.google.de/search?num=100&q=' + keyword)

links = browser.find_all("div", {"class": "g"})

counter = 0

for i in links:
    counter = counter + 1
    if sitename in str(i):
        url = i.find_all('a', href=True)
        print("position: %d url: %s" % (counter, url[0]['href']))

Im Anschluss geben wir dem Script ausführenden Rechte

chmod +x ranking.py

Nun können wir mit dem Aufruf unseres Scriptes gefolgt von der zu checkenden Webseite und den Keywords aufrufen.

./ranking.py <webseite> <keyword>

Das Keyword kann genau so eingegeben werden wie auch in der google Suchmaske, also sind auch zusammengesetzte Keywordkonbinationen sind möglich. Das Script baut aus diesen den passenden Suchstring zusammen.

./ranking.py der-linux-admin.de plesk admin

Der Aufruf sucht nach dem Keyword „plesk admin“ und liefert das Ranking der Seite „der-linux-admin.de“ zurück.

Nachfolgend ein paar Beispiele:

./ranking.py der-linux-admin.de plesk admin
site: der-linux-admin.de keyword: plesk+admin
position: 10 url: https://der-linux-admin.de/2017/07/plesk-neues-admin-passwort-per-konsole-cli-setzen/
./ranking.py heise.de  it news
site: heise.de keyword: it+news
position: 2 url: https://www.heise.de/

Das Script kann von Euch natürlich noch weiter ausgebaut werden z.B. können die Ergebnisse in einer DB gespeichert werden und stehen dann weiteren Auswertungen zur Verfügung. Auch gebe ich keine Garantie, dass dies immer funktionieren wird. Eventuell müssen dazu die Suche nach den DOM-Elementen zukünftig angepasst werden. Das Script kann frei verwendet werden und soll nur als kleine Anregung für weitere Projekte dienen. Ich würde mich über Feedback, Anregungen oder unfangreichere Varianten dazu freuen.

Hinweise zum Google Keyword Ranking Check

Nach etwas wichtiges am Rande. Führt man den „Python Google Keyword Ranking Check“ zu oft von der gleichen IP aus bemerkt dies natürlich Google und bestraft dies indem ihr bei der nächsten Suche ein Captcha lösen müsst :D Ich habe das Problem etwas entschärft indem ich bei jedem Aufruf einen anderen Browser vorgaukel. Dies ist natürlich die simpelste Methode aber brachte bisher eine kleine Besserung. Bei der Verwendung von vielen Abfragen in Folge sollte ein gewisses Timeout zwischen den Abfragen eingebaut werden.

Alternativ kann auch ein SOCKS-Proxy z.B. mittes SSH-Tunnel verwendet werden und als Endpunkte verschieden Server definiert werden. Wie dies realisiert werden kann werde ich in einen der folgenden Artikel erläutern.

Weitere Infos zur Funktionsweise des Scriptes findet man auf den Projektseiten von robobrowser und  beautifulsoup4.

Ein Kommentar

  1. Hallo,
    mein Kommentar passt zwar nicht zu diesem Thema, würde mich aber freuen von dir einen Beitrag zu lesen wie man einen Vhost einrichten kann und die DNS einstellungen richtig setzt. Das überfordert mich etwas

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.