DÜZENLEME: kodu daha iyi çalışacak , sitenizdeki youtube linki gibi saçma linkleri çekmemesi için dahil edilecek alan adı sorusunu ekledim, sitemap dosyasının adını soracak şekilde güncelledim.
kullanım için gerekli paketler
pip install requests
pip install beautifulsoup4
pip install pyfiglet

import requests
from bs4 import BeautifulSoup
from urllib.parse import urlparse, urljoin
import pyfiglet

ascii_banner = pyfiglet.figlet_format("GELİŞTİR")
print(ascii_banner)

def get_links(url):
    try:
        response = requests.get(url)
        response.raise_for_status()
        soup = BeautifulSoup(response.text, 'html.parser')
        links = [a.get('href') for a in soup.find_all('a', href=True)]
        absolute_links = [urljoin(url, link) for link in links]
        return absolute_links
    except Exception as e:
        print(f"Hata: {str(e)}")
        return []

def crawl_site(root_url, domain, max_depth=-1):
    visited = set()
    queue = [(root_url, 0)]

    while queue:
        url, depth = queue.pop(0)
        if max_depth != -1 and depth > max_depth:
            continue
        if url in visited:
            continue
        visited.add(url)

        if domain not in url:
            continue

        print(f"Processing: {url}")

        links = get_links(url)
        for link in links:
            queue.append((link, depth + 1))

    # Kullanıcıdan sitemap dosyasının adını al
    sitemap_filename = input("Sitemap dosyasının adını girin (örneğin, sitemap.xml): ")

    # Sitemap oluştur
    create_sitemap(root_url, visited, sitemap_filename)

def create_sitemap(start_url, visited, filename):
    with open(filename, 'w', encoding='utf-8') as file:
        file.write('<?xml version="1.0" encoding="UTF-8"?>\n')
        file.write('<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\n')
        for url in visited:
            file.write(f'<url><loc>{url}</loc></url>\n')
        file.write('</urlset>\n')

if __name__ == "__main__":
    root_url = input("Web sitesi URL'sini girin: ")
    domain = input("Dahil etmek istediğiniz alan adını girin (örneğin, smsvar.com): ")
    max_depth = int(input("Derinlik sınırlamasını girin (tam tarama için -1): "))

    crawl_site(root_url, domain, max_depth)