Benutzer-Werkzeuge

Webseiten-Werkzeuge


crawler

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

crawler [2025/07/01 00:11] (aktuell)
jango angelegt
Zeile 1: Zeile 1:
 +<code python>
 +import requests
 +from urllib.parse import urljoin, urlparse, urldefrag, parse_qs
 +from bs4 import BeautifulSoup
  
 +# 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):
 +    """
 +    Diese Funktion prüft, ob eine URL unerwünschte Query-Parameter oder Dateiendungen enthält.
 +    """
 +    # URL parsen
 +    parsed_url = urlparse(url)
 +    
 +    # Prüfen auf unerwünschte Query-Parameter
 +    query_params = parse_qs(parsed_url.query)
 +    for param in query_params:
 +        if param in blocked_query_params:
 +            return True
 +    
 +    # Prüfen auf unerwünschte Dateiendungen
 +    if any(url.endswith(ext) for ext in blocked_extensions):
 +        return True
 +    
 +    return False
 +
 +def crawl(start_url, base_url):
 +    """
 +    Diese Funktion crawlt die angegebene URL, extrahiert Links und verarbeitet sie.
 +    """
 +    visited_urls = set()
 +    queue = [start_url]
 +
 +    while queue:
 +        current_url = queue.pop(0)
 +        if current_url in visited_urls:
 +            continue
 +        
 +        # URL parsen und fragment entfernen
 +        full_url, _ = urldefrag(current_url)
 +
 +        #print(f"Testing {full_url}")
 +        # Filtern der unerwünschten URLs
 +        if is_blocked_url(full_url):
 +            #print(f"Skipping blocked URL: {full_url}")
 +            continue
 +
 +        # Markiere die URL als besucht
 +        visited_urls.add(full_url)
 +
 +        print(f"Processing URL: {full_url}")
 +
 +        # Hole die HTML-Seite
 +        try:
 +            response = requests.get(full_url)
 +            if response.status_code != 200:
 +                print(f"Failed to fetch {full_url}: {response.status_code}")
 +                continue
 +            
 +            page_content = response.text
 +            soup = BeautifulSoup(page_content, 'html.parser')
 +
 +            # Finde alle Links auf der Seite
 +            a_links = soup.find_all('a', href=True)
 +
 +            # Verarbeite die Links
 +            for link in a_links:
 +                href = link.get('href')
 +                if href:
 +                    # Absolute URL erstellen
 +                    next_url = urljoin(base_url, href)
 +                    if next_url not in visited_urls:
 +                        #print(f'    Adding {next_url} to the queue')
 +                        queue.append(next_url)
 +
 +        except requests.RequestException as e:
 +            print(f"Error fetching {full_url}: {e}")
 +    
 +    print(f"Visited {len(visited_urls)} URLs.")
 +
 +# Start URL und Basis-URL für den Crawl-Prozess
 +start_url = 'https://codehelper.lima-city.at'  # Ändere dies auf die Start-URL
 +base_url = start_url  # Die Basis-URL für die relativen Links
 +
 +# Crawlen der Seite
 +crawl(start_url, base_url)
 +</code>
crawler.txt · Zuletzt geändert: 2025/07/01 00:11 von jango