import requests from bs4 import BeautifulSoup from urllib.parse import urlparse, parse_qs, urljoin from collections import Counter def check_affiliate_link(url): # Liste typischer Affiliate-Parameter affiliate_identifiers = ["aff_id", "partner", "ref", "aff", "affiliate"] parsed_url = urlparse(url) query_params = parse_qs(parsed_url.query) # Überprüft, ob einer der Affiliate-Parameter im Link vorhanden ist for key in query_params.keys(): if any(affiliate_id in key for affiliate_id in affiliate_identifiers): return True return False def get_links_from_domain(domain): links = [] try: # Sicherstellen, dass die URL das Schema enthält if not domain.startswith("http://") and not domain.startswith("https://"): domain = "https://" + domain response = requests.get(domain, timeout=10) response.raise_for_status() # Check, ob die Anfrage erfolgreich war soup = BeautifulSoup(response.text, "html.parser") # Extrahiert alle Links und konvertiert relative in absolute URLs for a in soup.find_all("a", href=True): link = urljoin(domain, a.get("href")) links.append(link) except requests.RequestException as e: print(f"Fehler beim Abrufen der Domain {domain}: {e}") return links def analyze_domains(domains): link_data = [] for domain in domains: print(f"Analysiere Domain: {domain}") links = get_links_from_domain(domain) for link in links: link_type = "Affiliate Link" if check_affiliate_link(link) else "Normaler Link" link_data.append((domain, link, link_type)) return link_data def rank_domains_by_link_count(link_data): # Zählt die Verlinkungsanzahl für jede Domain und sortiert diese link_counter = Counter([entry[0] for entry in link_data]) return link_counter.most_common() # Beispiel-Domainliste zur Analyse domains = ["example.com", "example2.com"] # Schritt 1: Links analysieren link_data = analyze_domains(domains) # Schritt 2: Domains nach Linkanzahl sortieren domain_rankings = rank_domains_by_link_count(link_data) # Ergebnisse anzeigen print("Domain-Rankings nach Verlinkungsanzahl:") for domain, count in domain_rankings: print(f"{domain}: {count} Verlinkungen") print("\nAffiliate Links und normale Links:") for domain, link, link_type in link_data: print(f"{domain} - {link} - {link_type}")
Kommentare
Kommentar veröffentlichen