wikipedia_scraper.py aktualisiert
This commit is contained in:
@@ -212,12 +212,12 @@ class WikipediaScraper:
|
||||
|
||||
def search_company_article(self, company_name, website=None, parent_name=None, max_recursion_depth=1):
|
||||
"""
|
||||
Sucht einen passenden Wikipedia-Artikel fuer das Unternehmen und gibt das
|
||||
wikipedia.WikipediaPage Objekt zurueck. Berücksichtigt nun auch den parent_name.
|
||||
Sucht einen passenden Wikipedia-Artikel. Finale Version mit korrekter
|
||||
Parameter-Weitergabe an die innere rekursive Funktion.
|
||||
"""
|
||||
if not company_name or str(company_name).strip() == "":
|
||||
self.logger.warning("Wikipedia search skipped: No company name provided.")
|
||||
raise ValueError("Kein Firmenname fuer Wikipedia Suche angegeben.")
|
||||
return None
|
||||
|
||||
search_terms = self._generate_search_terms(company_name, website)
|
||||
if not search_terms:
|
||||
@@ -229,9 +229,8 @@ class WikipediaScraper:
|
||||
processed_titles = set()
|
||||
original_search_name_norm = normalize_company_name(company_name)
|
||||
|
||||
# KORRIGIERT: parent_name wird nun an die innere Funktion übergeben
|
||||
# Die innere Funktion erbt `parent_name` aus dem Scope der äußeren Funktion.
|
||||
def check_page_recursive(title_to_check, current_depth):
|
||||
# KORRIGIERT: Sicherer Vergleich, falls max_recursion_depth None sein sollte
|
||||
effective_max_depth = max_recursion_depth if max_recursion_depth is not None else 2
|
||||
if title_to_check in processed_titles or current_depth > effective_max_depth:
|
||||
return None
|
||||
@@ -249,7 +248,7 @@ class WikipediaScraper:
|
||||
page = None
|
||||
try:
|
||||
page = wikipedia.page(title_to_check, auto_suggest=False, preload=False, redirect=True)
|
||||
# KORRIGIERT: parent_name wird an die Validierung übergeben
|
||||
# KORRIGIERTER AUFRUF: Übergibt jetzt 5 Argumente, wie von _validate_article erwartet.
|
||||
if self._validate_article(page, company_name, website, parent_name):
|
||||
self.logger.info(f" -> Titel '{page.title[:100]}...' erfolgreich validiert!")
|
||||
return page
|
||||
@@ -270,29 +269,19 @@ class WikipediaScraper:
|
||||
relevant_options.append(option)
|
||||
|
||||
for option_to_check in relevant_options[:3]:
|
||||
# KORRIGIERT: parent_name wird im rekursiven Aufruf weitergereicht
|
||||
# Der rekursive Aufruf ist korrekt und einfach.
|
||||
validated_page = check_page_recursive(option_to_check, current_depth + 1)
|
||||
if validated_page: return validated_page
|
||||
return None
|
||||
except Exception as e_page:
|
||||
title_for_log = page.title[:100] if page and hasattr(page, 'title') and page.title else title_to_check[:100]
|
||||
if "extlinks" in str(e_page).lower():
|
||||
self.logger.warning(f" -> KeyError ('extlinks') beim Verarbeiten von Titel '{title_for_log}...'. Übersprungen.")
|
||||
else:
|
||||
self.logger.error(f" -> Unerwarteter Fehler bei Verarbeitung von Seite '{title_for_log}': {e_page}")
|
||||
self.logger.error(f" -> Unerwarteter Fehler bei Verarbeitung von Seite '{title_for_log}': {e_page}")
|
||||
return None
|
||||
|
||||
# Hauptlogik der Suche
|
||||
# Die innere Funktion `check_page_recursive` erbt `parent_name` jetzt aus dem äußeren Scope.
|
||||
# Daher muss der Parameter hier nicht mehr übergeben werden.
|
||||
|
||||
# Iteriere durch alle generierten Suchbegriffe, inklusive des Originalnamens
|
||||
# Hauptlogik der Suche
|
||||
for term in search_terms:
|
||||
self.logger.debug(f" -> Versuche Suchbegriff: '{term[:100]}...'")
|
||||
page_found = check_page_recursive(term, 0)
|
||||
if page_found:
|
||||
return page_found
|
||||
|
||||
if page_found: return page_found
|
||||
|
||||
self.logger.warning(f"Kein passender & validierter Wikipedia-Artikel fuer '{company_name[:100]}...' gefunden.")
|
||||
return None
|
||||
|
||||
Reference in New Issue
Block a user