• 27-09-2023, 05:49:41
    #1
    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)


  • 27-09-2023, 10:27:20
    #2
    Eline sağlık hocam
  • 27-09-2023, 15:15:04
    #3
    drdiyar adlı üyeden alıntı: mesajı görüntüle
    Eline sağlık hocam
    Rica ederim iyi forumlar