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.
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)