{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Webcrawling\n",
"Crawlen beschreibt den Prozess, bei dem Daten aus einer Webseite extrahiert werden. Das Vorgehen ist meist wie folgt:
\n",
"\n",
"1. Seite als HTML-Code herunterladen\n",
"2. HTML-Code einlesen und Elemente suchen\n",
"3. Aus gefundenen Element(en) werden Informationen extrahiert.\n",
"\n",
"\n",
"## 1.: HTML-Code herunterladen \n",
"mit **requests**-Paket"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"import requests # requests importieren\n",
"url = \"http://www.beispiel.de\"\"\n",
"r = requests.get(url) # das 'r' steht für 'Response', kann aber durch jedes beliebiges Zeichen ersetzt werden"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Die Anfrage wurde an den Server gestellt. Der Statuscode der Webseite kann genauer betrachtet werden. Wichtige HTTP Status-Codes sind:\n",
"- 500: Internal Server Error\n",
"- 404: Seite nicht gefunden\n",
"- 200: Alles Okay"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"200\n"
]
}
],
"source": [
"print(r.status_code)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2. HTML-Code einlesen und Elemente suchen"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"from bs4 import BeautifulSoup # BeautifulSoup importieren\n",
"doc = BeautifulSoup(r.text, \"html.parser\") # HTML-Datei mit BeautifulSoup Einlesen"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Mit dem heruntergeladenen und eingelesenen HTML-Code können Elemente extrahiert werden. Dafür bieten sich CSS-Selektroen an.\n",
"Beispiel:\n",
"\n",
"- `
Diese Domain ist für illustrative Beispiele in Dokumenten eingerichtet.
Sie können diese Domain ohne Erlaubnis als Beispiel verwenden und verlinken.
Mehr Infos\n", "
]\n" ] } ], "source": [ "print(doc.find_all(\"p\"))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3. Aus gefundenen Element(en) werden Informationen extrahiert." ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0. Diese Domain ist für illustrative Beispiele in Dokumenten eingerichtet. Sie können diese Domain ohne Erlaubnis als Beispiel verwenden und verlinken.\n", "1. Mehr Infos\n", "\n" ] } ], "source": [ "i = 0\n", "for p in doc.find_all(\"p\"): # im Dokument alle-Konstruktoren finden\n", " print(str(i) + \". \" + p.text) # für alle
dessen Text ausgeben\n", " i = i + 1" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.8" } }, "nbformat": 4, "nbformat_minor": 2 }