# Author Ralfs Lāns # Created 05.03.2024 # Editor Raivis Rampāns # Modified 11.03.2024 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC import time driver = webdriver.Firefox() driver.get("https://myanimelist.net/topanime.php") # ========== Cookies ========== cookie = WebDriverWait(driver, 30).until( EC.visibility_of_element_located((By.ID, "qc-cmp2-ui")) ) cookie_close = cookie.find_elements(By.CLASS_NAME, "css-1hy2vtq")[1] cookie_close.click() # ========== Find animes ========== animes = WebDriverWait(driver, 30).until( EC.visibility_of_all_elements_located((By.CLASS_NAME, "ranking-list")) ) for i, anime in enumerate(animes): try: animes = WebDriverWait(driver, 30).until( EC.visibility_of_all_elements_located((By.CLASS_NAME, "ranking-list")) ) anime=animes[i] link = anime.find_element(By.CSS_SELECTOR, ".anime_ranking_h3 .hoverinfo_trigger") link.click() except Exception as e: print(f"nav labi: {e}") continue # ========== Find data ========== try: title = driver.find_element(By.CLASS_NAME, "title-english").text except: title = driver.find_element(By.CLASS_NAME, "title-name").text side = driver.find_element(By.CLASS_NAME, "leftside") img = side.find_element(By.CSS_SELECTOR, "img.lazyloaded").get_attribute("src") img = img[len("https://cdn.myanimelist.net/images/anime/"):] rows = side.find_elements(By.CLASS_NAME, "spaceit_pad") for z, row in enumerate(rows): th = rows[z].find_element(By.CLASS_NAME, "dark_text").text if th == "Type:": type = rows[z].find_element(By.TAG_NAME, "a").text if th == "Episodes:": episode = rows[z].text.replace("Episodes: ", "") if th == "Aired:": aired = rows[z].text.replace("Aired: ", "").replace(",", "") if th == "Premiered:": season = rows[z].find_element(By.TAG_NAME, "a").text.replace(" ", ",") if th == "Licensors:": licensors = rows[z].text.replace("Licensors: ", "").replace(", add some", "") if th == "Studios:": studios = rows[z].find_element(By.TAG_NAME, "a").text if th == "Source:": source = rows[z].text.replace("Source: ", "") if th == "Genres:": genres = rows[z].text.replace("Genres: ", "") if th == "Rating:": rating = rows[z].text.replace("Rating: ", "") else: continue desc = driver.find_elements(By.CSS_SELECTOR, "tr td p")[0].text.replace("[Written by MAL Rewrite]", "") print(f"{title},{img},{season},{type},{rating},{source},\n{desc},\n{genres},{studios},{licensors},{episode},{aired}") print("————————————————————————————————————————————————————————————————————————————————————————————————————————————————————") driver.back() # Back to animes driver.quit()