Crawler geht nicht weiter, wenn fertig mit einer URL?
Hallo zusammen,
ich arbeite gerade an einem Python-Crawler, der spezifisch für die Website beispielurl.de entwickelt wurde. Mein Ziel ist es, verschiedene Unterseiten zu crawlen, die jeweils unterschiedlichen Kategorien angehören, wie z.B. "Flaschenhersteller" und "Kartenhersteller". Der Crawler soll automatisch von einer Kategorie (z.B. beispielurl.de/Flaschenhersteller/page-1, beispielurl.de/Flaschenhersteller/page-2, usw.) zur nächsten wechseln (z.B. beispielurl.de/Kartenhersteller/page-1, beispielurl.de/Kartenhersteller/page-2, usw.), sobald alle Seiten der aktuellen Kategorie durchlaufen sind.
Leider funktioniert der Wechsel zwischen den Kategorien nicht wie erwartet. Der Crawler verarbeitet alle Seiten der ersten Kategorie korrekt, aber anstatt zur nächsten Kategorie zu wechseln, beginnt er wieder von vorn bei der ersten Kategorie, ohne die nachfolgenden Kategorien zu berücksichtigen.
Hier ist ein vereinfachter Ausschnitt meines Codes:
def process_page(self, url):
soup = self.fetch_page_with_selenium(url)
links = self.extract_PLZ_links(soup)
for link in links:
self.fetch_PLZ_details(link)
def run(self):
try:
for code in self.postal_codes:
page_number = 1
has_more_pages = True
while has_more_pages:
url = f"{self.base_url}/suche/-/{code}?page={page_number}"
soup = self.fetch_page_with_selenium(url)
links = self.extract_PLZ_links(soup)
if links:
for link in links:
self.fetch_PLZ_details(link)
page_number += 1
else:
has_more_pages = False
finally:
self.driver.quit()
self.csv_handler.close_csv()
Hersteller = [Flaschenhersteller, Kartenhersteller, etc. ]
crawler = WebCrawler("https://beispielurl.de", Hersteller)
crawler.run()
Hat jemand eine Idee, warum der Crawler nicht zur nächsten Kategorie wechselt und wie ich dieses Problem beheben könnte? Ich bin für jeden Tipp dankbar!
1 Antwort
Er prüft zwar, ob es weitere Seiten in der aktuellen Kategorie gibt, aber sobald er mit einer Kategorie fertig ist, scheint er nicht korrekt zur nächsten Kategorie überzugehen. Stattdessen wiederholt er die Anfrage für die erste Kategorie, weil die Variable
page_number
und
has_more_pages
für alle Kategorien neu initialisiert werden, ohne dass ein tatsächlicher Wechsel der Kategorie stattfindet.
Du musst sicherstellen, dass der Crawler für jede Kategorie in der Liste (Hersteller) durchläuft und erst dann zur nächsten Kategorie übergeht, wenn alle Seiten der aktuellen Kategorie verarbeitet wurden.
Erstmal Danke für die Antwort!!! Aber leider weiß ich nicht wie ich das beheben soll.:/