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) Python Web Scraping Yardım
9
●194
- 14-12-2023, 21:42:29Merhaba 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.
- 14-12-2023, 21:50:07Link yanlış kalmış. Linki doğrusu ile değiştirdim.hesapadim adlı üyeden alıntı: mesajı görüntüle
- 14-12-2023, 21:57:45burayı
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:39hesapadim 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.
Alıntı - 14-12-2023, 22:09:05. Find olmuş kodda da öyle mi? detail.find olacakAsyacuk adlı üyeden alıntı: mesajı görüntüle
- 14-12-2023, 22:13:01Peki konu kısmını nasıl tükçe olarak alabilirim? Rica etsem bu konuda da yardımcı olabilir misiniz?hesapadim adlı üyeden alıntı: mesajı görüntüle
- 14-12-2023, 22:17:50normalde türkçesi yoksa çeviri apisi bağlanabilirAsyacuk adlı üyeden alıntı: mesajı görüntüle
- 14-12-2023, 22:26:20python kütüphanesi ile yapılamaz mı?hesapadim adlı üyeden alıntı: mesajı görüntüle