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)