Wie programmiert man einen Bot?

Du hast dich bestimmt schon öfter gefragt wie du deinen eigenen Zombie, Crawler oder Bot programmieren kannst. Hier erfährst du wie man sowas macht. Als erstes brauchst du ein bisschen Know-How im programmieren. Am besten eignet sich die Programmiersprache Python um rein zu kommen, da sie einfach und schnell zu erlernen ist. Hast du bereits etwas Programmiererfahrung, kannst du diesen Schritt einfach überspringen und direkt anfangen.

Schritt 1 – Python installieren

Wenn du auf Windows arbeitest würde ich dir WinPython empfehlen, da es sehr einfach zu installieren geht und du dannach direkt anfangen kannst. Weiters sind auch schon viele Module vorinstalliert wie zum Beispiel numpy, requests und viele mehr. WinPython kannst du einfach bei Google eingeben und dann downloaden und installieren.

Nach dem du mit der Installation fertig bist, kanns du mit Schritt 2 fortfahren.

Schritt 2 – Selenium Modul installieren

Jetzt fragst du dich bestimmt what the fuck ist Selenium?

Selenium ist ein Modul für sehr viele Programmiersprachen, die es erlauben Cross-Browser Automatisierung zu machen. Das bedeutet das du damit Eingaben machen kannst wie zum Beispiel Text in ein Formular einfügen. Du kannst aber noch 1000 andere Sachen damit machen. Beispielsweise Screenshots erstellen der aktuellen Browserseite, dann Elemte auslesen (So wie hier wenn du die WebEntwickler Tools verwendest) und vieles mehr.

WinPython Tools
WinPython Tools

Das funktioniert eigentlich ganz einfach indem du auf WinPython Command Prompt klickst und
pip install selenium
eingibst.

Dannach kommt eine Fortschrittsanzeige und dannach sollte es installiert sein.

Schritt 3 – Webdriver downloaden

Was ist jetzt wieder ein Webdriver? Ein Webdriver stellt die Schnittstelle zwischen deinem Bot (Python+Selenium) dar und verbindet damit den  Browser, wie du in der folgenden Abbildung sehen kannst.

Diagramm für Selenium
Verbindung zwischen Selenium, Webdriver und Browser

 

 

 

 

 

Dazu ist es nun entscheidend welchen Browser du verwendest. Die meisten von euch werden wohl Firefox oder Chrome verwenden, also werde ich euch dafür die Links bereitstellen. Du kannst aber auch jeden anderen Browser verwenden, so lange dieser Selenium unterstüzt und einen Webdriver anbietet. Selenium ist also eine Schnittstelle für alle möglichen Webdriver und bietet allgemeine Befehle an, damit es möglich ist den Code browserunabhängig auszuführen. Jetzt sind wir schon einige Schritte näher an dem Ziel „Bot programmieren“

Wie gehts weiter? Hier erfährst du mehr

Einen Web Bot mit Python und Selenium erstellen

Web Bot Darstellung

Ein Web Bot ist ein Programm oder Skript, welches automatisch Aufgaben bearbeitet die sich oft wiederholen, wie zum Beispiel Preise von einem Onlineshop auslesen und in einer Datenbank speichern. Damit kann man Preisänderungen verfolgen oder darstellen und gegebenenfalls die Waren zum richtigen Zeitpunkt einkaufen.

Was braucht man um einen Web-Bot zu machen?

Um einen simplen Web-Bot zu schreiben braucht man folgende Dinge:

  • Browser
  • Webdriver
  • Python
  • Selenium-Modul
  • Bot-Code

Was ist ein Webdriver?

Ein Webdriver ist ein Steuerungsprogramm für den Browser. Damit kann man die Aktivitäten die man am Browser macht, automatisieren. Zum Beispiel „rufe die URL http://www.google.com auf“ oder „Zeige mir den Quelltext der aktuellen Seite“. Weiters kann man Javascript-Code live einspeisen oder den DOM-Elemente suchen wie zum Beispiel Links mit einem bestimmten Linktext.

Für die gängisten Browser existieren die notwendigen Driver. Diese müssen nicht installiert werden sondern sind ein eigenständiges Programm und funktionieren unter Windows auch ohne Administrationsrechte.

Download für die gängigsten Browser

Webdriver für Firefox
Webdriver für Chrome

Wie fange ich mit dem Web Bot an?

Nachdem das Selenium Modul installiert wurde kann nun mit der eigentlichen Abeit begonnen werden.

Dazu legt man sich am besten ein neues python-File an und gibt folgende Zeilen Code ein:

from selenium import webdriver

# Neue Instanz erzeugen mit Firefox
driver = webdriver.Firefox()
# zu Google navigieren
driver.get("http://www.google.com")
# den aktuellen Titel der Website auslesen
print(driver.title)
# driver wieder schließen
driver.quit()

Wenn alles funktioniert hat, wird der Browser gestartet, zu Google navigiert und der Title ausgelesen. Desweiteren gibt es noch unendliche Möglichkeiten, dazu empfehle ich aber die Dokumentation bei Selenium selbst zu lesen.

Wichtig ist das der Webdriver im gleichen Verzeichnis liegt wie das Python-Script. Bei mir hat es nämlich nicht funktioniert, da der Webdriver wo anders gelegen war. Alternativ kann man auch den Pfad zum Webdriver im Code angeben und mit dieser Zeile:

driver = webdriver.Firefox(executable_path=r'C:\webdriver\geckodriver.exe')

Zum Beispiel kann man die Suchposition der eigenen Domain bei Google auslesen  und in einer Datenbank speichern.

Ameisenalgorithmus – Schwarmintelligenz in Matlab

Vogelschwarm

Hab für die Uni ein kleines objektorientiertes Skript in Matlab geschrieben welches über den Ameisenalgorithmus handelt.

Was ist der Ameisenalgorithmus?

Dieser simuliert mehrere Ameisen und deren Fähigkeit zur bildung einer kollektiven Intelligenz. Das nennt man Schwarmverhalten. Dieses Verhalten kann man auf Probleme des Menschen anwenden. Zum Beispiel in der Transportlogistik. (siehe auch Travelling Salesman Problem). Wie kann man möglichst viele Städte bzw. Ziele mit der geringsten Route abfahren? Die Lösung für diese Frage steigt mit jedem zusätzlichen Ziel stark an. Darum gibt es heuristische Verfahren wie den Ameisenalgorithmus.

Wie denkt eine Ameise?

Eigentlich ist ein einzelnes Individuum nicht sehr intelligent. Es geht in zufällige Richtungen bis es Futter findet. Dabei schüttet es einen Stoff aus der als Pheromon bezeichnet wird. Findet die Ameise dann Futter, so kehrt sie zum Nest zurück. Dadurch hinterlässt sie eine Pheromonspur welcher wiederum andere Ameisen folgen. Es bildet sich nach der Zeit ein Ameisenpfad aus und die Ameisen haben eine gute Route gemeinsam gefunden.

Hier noch das Video. Der Code wurde objektorientiert in Matlab geschrieben

Paper

Hier könnt ihr das zugehörige Paper downloaden. Es ist auf englisch.

Download Paper Ant-Algorithm