CodeGym /Java Kurs /Python SELF DE /Navigieren durch mehrere Seiten mit minimaler Nutzung dyn...

Navigieren durch mehrere Seiten mit minimaler Nutzung dynamischer Elemente

Python SELF DE
Level 38 , Lektion 1
Verfügbar

1. Vorbereitung auf die Navigation

Bevor wir mit unseren großen Abenteuern beginnen, müssen wir uns ausstatten und die richtigen Tools zur Hand nehmen: Selenium und ein bisschen Schlauheit. Wir gehen davon aus, dass du bereits weißt, wie du Selenium und den Browser-Driver einrichtest, also los geht’s!

Driver-Einrichtung

Python

from selenium import webdriver

# Browser-Driver starten, z.B. Chrome
driver = webdriver.Chrome()

# Die erste Seite unseres Abenteuers öffnen
driver.get("http://example.com/start-page")

Bisher alles Standard – wir haben den Browser geöffnet und die Startseite geladen. Aber jetzt beginnt der Spaß: Wir wollen nicht auf einer Seite hängen bleiben. Wir wollen alle Nachbarseiten besuchen!

2. Pagination: Spaziergang durch Seiten

Der einfachste und freundlichste Weg, durch Seiten zu navigieren, ist die Pagination. Du kennst bestimmt diese kleinen Zahlen unten auf der Seite, oder? Sie sind wie Straßenschilder: „Ihr nächster Halt — Seite 2“.

Daten von Seiten extrahieren

Bevor wir zu unserer Reise aufbrechen, möchten wir Informationen von der aktuellen Seite sammeln. Angenommen, es handelt sich um Produktlisten oder Artikelüberschriften.

Python

def extract_data():
    # Alle interessanten Elemente auf der Seite finden, z.B. Überschriften
    titles = driver.find_elements_by_class_name("item-title")
    for title in titles:
        print(title.text)  # Ja, wir geben den Text einfach aus, aber du kannst ihn speichern, wo immer du möchtest

extract_data()

Falls du die vorherigen Vorlesungen verpasst hast, dieser Code-Schnipsel sucht alle Überschriften mit der Klasse item-title und gibt sie aus.

Zur nächsten Seite navigieren

Jetzt, wo wir die Daten haben, ist es Zeit, weiterzuziehen. Pagination wird oft durch Buttons mit Links zur nächsten oder vorherigen Seite dargestellt. Diese Buttons müssen wir finden und anklicken.

Python

def go_to_next_page():
    try:
        # Den Button für die nächste Seite finden und darauf klicken
        next_button = driver.find_element_by_link_text("Next")
        next_button.click()
    except NoSuchElementException:
        # Wenn der Button nicht existiert, sind wir am Ende angekommen
        print("Ende der Seitenliste.")

Diese Funktion sucht nach einem Link mit dem Text „Next“. Wenn sie gefunden wird, klickt sie darauf und geht zur nächsten Seite. Wenn nicht, erkennt unser Bot, dass er das Ende des Internets erreicht hat... naja, zumindest dieser Seitenabfolge.

3. Zyklisches Durchlaufen der Seiten

Was fehlt uns zum vollkommenen Glück? Richtig, eine Schleife! Lass uns alles in einer praktischen Schleife zusammenfassen, damit unser Bot wie ein Profi durch alle verfügbaren Seiten navigieren kann.

Python

while True:
    extract_data()  # Daten von der aktuellen Seite sammeln
    go_to_next_page()  # Zur nächsten Seite navigieren
    time.sleep(2)  # Etwas Pause machen, um den Server nicht zu erschrecken

Voilà, jetzt navigiert unser Bot tapfer durch alle Seiten, auf denen der „Next“-Button geklickt werden kann. Dieser Code wird ausgeführt, bis keine weiteren Seiten mehr übrig sind. Denkt daran, dass eine kleine Pause zwischen den Anfragen eure Freundschaft mit dem Server bedeutet. Niemand mag Spammer, vor allem nicht die Administratoren von Webseiten.

4. Dynamische Interaktionen

Freunde, nichts im Leben ist so einfach wie diese Beispiele mit Pagination. Manchmal verhält sich eine Seite wie ein unsichtbarer Ninja und lädt Daten dynamisch während des Scrollens. Kein Problem, damit kommen wir auch klar.

Explizites Warten

Mit Warten kann dein Code meditieren, bis das gewünschte Element verfügbar ist. Das ist besonders nützlich, wenn Inhalte nicht sofort geladen werden.

Python

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

def wait_for_element(locator):
    try:
        element = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.CLASS_NAME, locator))
        )
        return element
    except TimeoutException:
        print("Element nicht gefunden.")

Mit dieser Funktion wird dein Bot harmonisch mit dynamisch geladenen Inhalten und wartet, bis die Elemente verfügbar sind.

Seite scrollen

Bei dynamischen Inhalten, wie sie auf magischen Seiten mit unendlichem Scrollen vorkommen, müssen wir möglicherweise die Seite nach unten scrollen, damit mehr Elemente geladen werden.

Python

def scroll_down():
    # Mit JavaScript nach unten scrollen
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    time.sleep(2)

Das JavaScript-Skript hilft dabei, sanft nach unten zu scrollen, damit die Seite Inhalte laden kann. Diese Methode kann man in einer Schleife verwenden, um das unendliche Scrollen zu bewältigen.

5. Tipps und Tricks

Über die Beispiele hinauszugehen ist wie ein Abenteuerbuch voller Überraschungen. Stell dir vor, dein Bot muss ebenso wie du für verschiedene Szenarien bereit sein.

Wenn der Button „Next“ fehlt, es aber eine Pagination mit Seitenzahlen gibt, nutze einen dynamischen Ansatz, indem du die Nummer direkt in die URL einfügst. Und falls deine Webseite plötzlich zum Ninja wird und einige Seiten versteckt, passe deine Skripte so an, dass sie flexibel sind und bereit für Überraschungen.

Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION