• 15-08-2024, 00:21:31
    #1
    Merhaba mydramalist sitesindeki bazı içeriklerden birkaç veri almam gerekiyor. Alacağım veriler "Dizi adı", "Bölüm sayısı", "Yayın yılı" ve "Konusu". Dizi adını ve konu kısımlarını alıyorum ama bölüm sayısı ve yayın yılı verilerini alamıyorum. Bir de konu kısmını türkçe olarak almak istiyorum. Bu konuda yardımcı olabilir misiniz? Sabahtan beri 7-8 yapay zeka denedim ama bir türlü yapamadım. Kodu aşağıya yazıyorum. Yardımcı olanlara şimdiden teşekkür ederim.

    Tek seferlik kullanacağım bir program olacağı için ücretli yaptırmak istemiyorum. Nerenin yanlış olduğunu söyler misiniz?




    import requests
    
    from bs4 import BeautifulSoup
    
    import csv
    
    from googletrans import Translator  # Google Translate kütüphanesini yükle
    
    # Fonksiyonu tanımlayın
    
    def scrape_and_save(url, page_num):
    
        # İstek gönderin
    
        response = requests.get(url)
    
        soup = BeautifulSoup(response.content, "html.parser")
    
        
    
        # CSV dosyasını açın ve yazıcıyı tanımlayın
    
        with open(f"sayfa_{page_num}.csv", mode="w", encoding="utf-8", newline="") as file:
    
            writer = csv.writer(file)
    
            writer.writerow(["Dizi/Film Adı", "Bölüm Sayısı", "Yayın Yılı", "Konusu"])  # Sütun başlıkları
    
            
    
            # Dizi/Film başlıklarını bulun
    
            titles = soup.find_all("h6", class_="text-primary")
    
            
    
            for title in titles:
    
                drama_title = title.get_text(strip=True)
    
                drama_link = title.a["href"]
    
                drama_response = requests.get("https://mydramalist.com" + drama_link)
    
                drama_soup = BeautifulSoup(drama_response.content, "html.parser")
    
                
    
                details = drama_soup.find_all("li", class_="p-a-0")
    
                episodes = "N/A"
    
                aired = "N/A"
    
                for detail in details:
    
                    label = detail.find("b", class_="inline").get_text(strip=True)
    
                    if label == "Episodes:":
    
                        episodes = detail.get_text(strip=True).split(':')[1].strip()
    
                    elif label == "Aired:":
    
                        aired = detail.get_text(strip=True).split(':')[1].strip()            
    
                summary = drama_soup.find("div", class_="show-synopsis").get_text(strip=True)
    
                
    
                # Çeviri servisi sınırlarını aşmamak için metni parçalara bölelim
    
                max_chars = 450  # Her parça için maksimum karakter sayısı
    
                parts = [summary[i:i + max_chars] for i in range(0, len(summary), max_chars)]
    
                translated_summary = ""
    
                translator = Translator()
    
                for part in parts:
    
                    # Her parçayı çevirip birleştirelim
    
                    translated_part = translator.translate(part, src='en', dest='tr').text
    
                    translated_summary += translated_part + " "
    
                
    
                # Elde edilen verileri CSV dosyasına yazın
    
                writer.writerow([drama_title, episodes, aired, translated_summary])
    
    # Başlangıç URL'si
    
    base_url = "https://mydramalist.com/search?adv=titles&ty=68&co=3&re=2024,2024&rt=1,10&st=3&so=date&page="
    
    # Her sayfa için işlem yapın ve veriyi CSV'ye kaydedin
    
    for page_num in range(1, 55):  # Örnek olarak 54 sayfa alacağız
    
        url = base_url + str(page_num)
    
        scrape_and_save(url, page_num)
  • 15-08-2024, 00:44:08
    #2
    Hatayı da yazsaydın keşke tek tek bakıp vakit kaybı olmazdı