Python TagebuchPython lernen – mein persönliches Tagebuch

Tagebuch-Eintrag #45
Webseite Crawlen mit Python

Webseiten crawlen mit Python war das nächste Thema, welches im Udemy-Python-Kurs dran war.
Werbung/Anzeige

Vor gut einer Woche habe ich das Thema Webseiten crawlen abarbeitet und weiß nun, was ich benötige um Informationen aus Webseite auszulesen.

Als ich vorher darüber gelesen hatte, kam mir schon den einen oder anderen praktischen Nutzen in den Sinn. Zum Beispiel verschiedene HTML-Tabellen auslesen und nur die Informationen in den Zellen weiterverarbeiten, die man braucht.

Aber das ist dann was für später. Also, was habe ich gelernt und was brauche ich um Webseiten zu crawlen?

Module

Zunächst einmal, muss ich dafür verschiene Module importieren

import requests
from bs4 import BeautifulSoup

Request ist dafür da um eine Anfrage zu einer Webseite zu schicken. Diese Webseite wird dann wiederrum im BeautifulSoup ausgelesen und der HTML-Code der Webseite wird dargestellt.

Als Beispiel crawle ich meine eigene Python-Tagebuch-Seite:

import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin
import time

url = "https://python-tagebuch.de"
source = requests.get(url)
soup = BeautifulSoup(source.text, "html.parser")        

for post in soup.select("article"):
    title = post.select_one(".h2-title")
    excerpt = post.select_one(".mypy-the_excerpt")
    content = post.select_one(".mypy-the_content")
    print(title)
    print(excerpt)
    print(content)
    print("-----" * 5)

In der for-Schleife, gebe ich dann alle Überschriften, Auszüge (Excerpt) und Inhalte aus.

Ausgelesene Inhalte mit HTML-Code
Ausgelesene Inhalte mit HTML-Code

Im ersten Moment klappt das schon. Sieht aber nicht brauchbar aus wegen den ganzen HTML-Code drumrum. Um diesen zu „entfernen“, gibt die Methode .text von BeautifulSoup. Diese Methode hänge ich bei meinen Überschriften, Auszüge und Inhalt in der for-Schleife mit dran. Dann sieht der Code so aus:

import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin
import time

url = "https://python-tagebuch.de"
source = requests.get(url)
soup = BeautifulSoup(source.text, "html.parser")        

for post in soup.select("article"):
    title = post.select_one(".h2-title").text
    excerpt = post.select_one(".mypy-the_excerpt").text
    content = post.select_one(".mypy-the_content").text
    print(title)
    print(excerpt)
    print(content)
    print("-----" * 5)

Und die dazugehörige Ausgabe im Terminal von VS Code:

 Ausgelesene Inhalte ohne HTML-Code
Ausgelesene Inhalte ohne HTML-Code

Also, es funktioniert ziemlich gut. Ich kann dann allerhand Sachen damit machen. Es in einer Liste speichern und/oder in einer CSV-Datei und und und.

Weiterführende Links

# # ## ENDE Tagebuch-Eintrag #45 | Webseite Crawlen mit Python
Werbung/Anzeige
Schlagwörter im Tagebuch-Eintrag:

Kommentar schreiben




Werbung/Anzeige