• 14-12-2023, 21:42:29
    #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.


    import requests
    from bs4 import BeautifulSoup
    import csv
    # 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("div", class_="col-lg-12")
                episodes = "N/A"
                aired = "N/A"
                for detail in details:
                    label = detail.find("span", class_="text-primary").get_text(strip=True)
                    if label == "Episodes:":
                        episodes = detail.find("p").get_text(strip=True)
                    elif label == "Aired:":
                        aired = detail.find("p").get_text(strip=True)
                
                summary = drama_soup.find("div", class_="show-synopsis").get_text(strip=True)
                
                # Elde edilen verileri CSV dosyasına yazın
                writer.writerow([drama_title, episodes, aired, summary])
    # Başlangıç URL'si
    base_url = "https://mydramalist.com/search?adv=titles&ty=68&co=3&re=2020,2024&so=date&page="
    # Her sayfa için işlem yapın ve veriyi CSV'ye kaydedin
    for page_num in range(1, 4):  # Örnek olarak 3 sayfa alacağız
        url = base_url + str(page_num)
        scrape_and_save(url, page_num)
  • 14-12-2023, 21:48:04
    #2
    kullandığınız linkte sadece filmler var o yüzden
  • 14-12-2023, 21:50:07
    #3
    hesapadim adlı üyeden alıntı: mesajı görüntüle
    kullandığınız linkte sadece filmler var o yüzden
    Link yanlış kalmış. Linki doğrusu ile değiştirdim.
  • 14-12-2023, 21:57:45
    #4
    burayı
    details = drama_soup.find_all("div", class_="col-lg-12")
    episodes = "N/A"
    aired = "N/A"
    for detail in details:
    label = detail.find("span", class_="text-primary").get_text(strip=True)
    if label == "Episodes:":
    episodes = detail.find("p").get_text(strip=True)
    elif label == "Aired:":
                        aired = detail.find("p").get_text(strip=True)
    bununla değiştirin

    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()
    .... (4 nokta) yerine tab/ 4 boşluk olacak. burda düzgün koyulmuyor
  • 14-12-2023, 22:07:39
    #5
    hesapadim adlı üyeden alıntı: mesajı görüntüle
    burayı
    details = drama_soup.find_all("div", class_="col-lg-12")
    episodes = "N/A"
    aired = "N/A"
    for detail in details:
    label = detail.find("span", class_="text-primary").get_text(strip=True)
    if label == "Episodes:":
    episodes = detail.find("p").get_text(strip=True)
    elif label == "Aired:":
                        aired = detail.find("p").get_text(strip=True)
    bununla değiştirin

    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()
    .... (4 nokta) yerine tab/ 4 boşluk olacak. burda düzgün koyulmuyor
    import requests
    from bs4 import BeautifulSoup
    import csv
    # 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)
                
                # Elde edilen verileri CSV dosyasına yazın
                writer.writerow([drama_title, episodes, aired, summary])
    # Başlangıç URL'si
    base_url = "https://mydramalist.com/search?adv=titles&ty=68&co=3&re=2020,2024&so=date&page="
    # Her sayfa için işlem yapın ve veriyi CSV'ye kaydedin
    for page_num in range(1, 4):  # Örnek olarak 3 sayfa alacağız
        url = base_url + str(page_num)
        scrape_and_save(url, page_num)
    Bu şekilde mi olması gerekiyor? Hata verdi de.

    Alıntı
    Traceback (most recent call last):
    File "C:UsersUSERDesktopmdl scrappermain.py", line 45, in <module>
    scrape_and_save(url, page_num)
    File "C:UsersUSERDesktopmdl scrappermain.py", line 29, in scrape_and_save
    label = detail. Find("b", class_="inline").get_text(strip=True)
    TypeError: 'NoneType' object is not callable
  • 14-12-2023, 22:09:05
    #6
    Asyacuk adlı üyeden alıntı: mesajı görüntüle
    import requests
    from bs4 import BeautifulSoup
    import csv
    # 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)
                
                # Elde edilen verileri CSV dosyasına yazın
                writer.writerow([drama_title, episodes, aired, summary])
    # Başlangıç URL'si
    base_url = "https://mydramalist.com/search?adv=titles&ty=68&co=3&re=2020,2024&so=date&page="
    # Her sayfa için işlem yapın ve veriyi CSV'ye kaydedin
    for page_num in range(1, 4):  # Örnek olarak 3 sayfa alacağız
        url = base_url + str(page_num)
        scrape_and_save(url, page_num)
    Bu şekilde mi olması gerekiyor? Hata verdi de.
    . Find olmuş kodda da öyle mi? detail.find olacak
  • 14-12-2023, 22:13:01
    #7
    hesapadim adlı üyeden alıntı: mesajı görüntüle
    . Find olmuş kodda da öyle mi? detail.find olacak
    Peki konu kısmını nasıl tükçe olarak alabilirim? Rica etsem bu konuda da yardımcı olabilir misiniz?
  • 14-12-2023, 22:17:50
    #8
    Asyacuk adlı üyeden alıntı: mesajı görüntüle
    Peki konu kısmını nasıl tükçe olarak alabilirim? Rica etsem bu konuda da yardımcı olabilir misiniz?
    normalde türkçesi yoksa çeviri apisi bağlanabilir
  • 14-12-2023, 22:26:20
    #9
    hesapadim adlı üyeden alıntı: mesajı görüntüle
    normalde türkçesi yoksa çeviri apisi bağlanabilir
    python kütüphanesi ile yapılamaz mı?