Hier ist eine Funktion wie du bestimmte Dateiendungen und Query Parameter filtern könntest.
# Liste unerwünschter Query Parameter und Dateiendungen
blocked_query_params = ['to','show','last','login','register','sort','start','by']
blocked_extensions = ['.pdf', '.jpg', '.png', '.zip', '.exe']
def is_blocked_url(url):
parsed_url = urlparse(url)
query_params = parse_qs(parsed_url.query)
for param in query_params:
if param in blocked_query_params:
return True
if any(url.endswith(ext) for ext in blocked_extensions):
return True
return False
Das könntest du dann in deine Schleife einbauen.
for link in a_links:
href = link.get('href')
if href:
full_url = urljoin(base_url, href)
full_url, _ = urldefrag(full_url)
# check unwanted files
if is_blocked_url(full_url):
continue
if full_url.endswith('/') and full_url != base_url.rstrip('/'):
full_url = full_url.rstrip('/')
if full_url not in visited_urls:
print(f' Adding {full_url} in the queue')
queue.append(full_url)
visited_urls.add(full_url)
return page_info