Webcrawling

Crawlen beschreibt den Prozess, bei dem Daten aus einer Webseite extrahiert werden. Das Vorgehen ist meist wie folgt:

  1. Seite als HTML-Code herunterladen
  2. HTML-Code einlesen und Elemente suchen
  3. Aus gefundenen Element(en) werden Informationen extrahiert.

1.: HTML-Code herunterladen

mit requests-Paket

In [12]:
import requests        # requests importieren
url = "http://www.beispiel.de""
r = requests.get(url)  # das 'r' steht für 'Response', kann aber durch jedes beliebiges Zeichen ersetzt werden

Die Anfrage wurde an den Server gestellt. Der Statuscode der Webseite kann genauer betrachtet werden. Wichtige HTTP Status-Codes sind:

  • 500: Internal Server Error
  • 404: Seite nicht gefunden
  • 200: Alles Okay
In [13]:
print(r.status_code)
200

2. HTML-Code einlesen und Elemente suchen

In [25]:
from bs4 import BeautifulSoup      # BeautifulSoup importieren
doc = BeautifulSoup(r.text, "html.parser") # HTML-Datei mit BeautifulSoup Einlesen

Mit dem heruntergeladenen und eingelesenen HTML-Code können Elemente extrahiert werden. Dafür bieten sich CSS-Selektroen an. Beispiel:

  • <div class="test">Hallo</div>: mit Hilfe von .test finden, der Punkt steht hierbei für eine Klasse
  • <div id="test">Hallo</div>: mit Hilfe von #test finden, die Raute steht hierbei für einID-Attribut
In [32]:
print(doc.find_all("p"))
[<p>Diese Domain ist für illustrative Beispiele in Dokumenten eingerichtet. <br/>Sie können diese Domain ohne Erlaubnis als Beispiel verwenden und verlinken.</p>, <p><a href="/mehr.html">Mehr Infos</a>
</p>]

3. Aus gefundenen Element(en) werden Informationen extrahiert.

In [31]:
i = 0
for p in doc.find_all("p"):   # im Dokument alle <p>-Konstruktoren finden
    print(str(i) + ". " + p.text)             # für alle <p> dessen Text ausgeben
    i = i + 1
0. Diese Domain ist für illustrative Beispiele in Dokumenten eingerichtet. Sie können diese Domain ohne Erlaubnis als Beispiel verwenden und verlinken.
1. Mehr Infos