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)