Wie durchlaufen Sie mehrere Ergebnisseiten beim Web-Scraping mit Beautiful Soup

Ich habe ein Skript geschrieben, in dem ich Beautiful Soup verwende, um eine Website nach Suchergebnissen zu durchsuchen. Ich habe es geschafft, die gewünschten Daten über den Klassennamen zu isolieren.

Die Suchergebnisse werden jedoch nicht auf einer einzelnen Seite angezeigt. Stattdessen sind sie auf mehrere Seiten verteilt, sodass ich sie alle erhalten möchte. Ich möchte, dass mein Skript prüfen kann, ob es eine nächste Ergebnisseite gibt, und dass es sich dort auch selbst ausführt. Da die Ergebnisse in der Anzahl variieren, weiß ich nicht, wie viele Ergebnisseiten vorhanden sind, daher kann ich keinen Bereich vorgeben, über den iteriert werden soll. Ich habe auch versucht, einen 'if_page_exists'-Check durchzuführen. Wenn ich jedoch eine Seitenzahl eingebe, die außerhalb des Ergebnisbereichs liegt, ist die Seite immer vorhanden. Sie enthält nur keine Ergebnisse, sondern eine Seite, auf der angegeben ist, dass keine Ergebnisse angezeigt werden sollen.

Was mir jedoch aufgefallen ist, ist, dass jedes Seitenergebnis einen 'Next'-Link mit der ID' NextLink1 'hat und das letzte Seitenergebnis dies nicht hat. Ich denke, das ist die Magie. Aber ich weiß nicht, wie und wo ich diese Prüfung durchführen soll. Ich habe Endlosschleifen und so bekommen.

Das folgende Skript findet die Ergebnisse für den Suchbegriff 'x'. Hilfe wäre sehr dankbar.

from urllib.request import urlopen
from bs4 import BeautifulSoup

#all_letters = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o","p","q","r","s","t","u","v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
all_letters= ['x']
for letter in all_letters:

    page_number = 1
    url = "https://www.co.dutchess.ny.us/CountyClerkDocumentSearch/Search.aspx?q=nco1%253d2%2526name1%253d" + letter + "&page=" + str (page_number)
    html = urlopen(url)
    bsObj = BeautifulSoup(html)
    nameList = bsObj.findAll("td", {"class":"party-name"})

    for name in nameList:
        print(name.get_text())

Auch kennt jemand eine kürzere Möglichkeit, eine Liste alphanumerischer Zeichen zu instanziieren, die besser ist als die, die ich im obigen Skript auskommentiert habe?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage