Я здесь новичок и тоже новичок в Python! У меня на диске огромный архив mov ie, я написал код для загрузки плакатов mov ie, используя имена mov ie на моем диске, и поместил плакат в каждую папку mov ie.
from os import listdir
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.common.by import By
import requests
# Loading Film Names
film_names = [f for f in listdir("I:\\Movies")]
# Loading Image Names
image_names = [f for f in listdir("I:\\Movies")]
# Opening Chrome
driver = webdriver.Chrome()
driver.get('http://imdb.com')
counter = 0
for i in film_names[counter:]:
# filtering movie names to become without director names and no release date
parantez_num = i.find('(')
film_names[counter] = i[0:parantez_num - 1]
print(counter)
# Typing Film Name in Search Box
searchbox = driver.find_element_by_xpath('//*[@id="suggestion-search"]')
searchbox.send_keys(film_names[counter])
# Clicking Search Button
searchbutton = driver.find_element_by_xpath('//*[@id="suggestion-search-button"]')
searchbutton.click()
# Clicking First Result
firstsearch = WebDriverWait(driver, 5).until(
expected_conditions.element_to_be_clickable((By.XPATH, '//*
[@id="main"]/div/div[2]/table/tbody/tr[1]/td[2]/a'))
)
firstsearch.click()
# Maximizing Image
wait = WebDriverWait(driver, 10)
image_magnify = wait.until(expected_conditions.element_to_be_clickable((By.XPATH, '//*
[@id="title-overview-widget'''
'"]/div[1]/div[3]/div[1]/a/img')))
image_magnify.click()
# Saving The Image
image = WebDriverWait(driver, 5).until(
expected_conditions.element_to_be_clickable((By.XPATH, '//*[@id="photo-
container"]/div/div[3]/div/div[2]/div['
'1]/div[2]/div/img[2]'))
)
image_url = (image.get_attribute('src'))
with open("I:\\Movies\\" + image_names[counter] + "\\" + image_names[counter] + ".jpg", "wb") as
f:
f.write(requests.get(image_url).content)
# going back to the first page of IMDB
driver.back()
driver.back()
driver.back()
counter += 1
Работает нормально. Но после случайного количества успешных загрузок он внезапно останавливается и выдает ошибку:
Traceback (most recent call last):
File "C:/Users/Kurdman/Desktop/Poster Downloader/Main/MainCode.py", line 42, in <module>
image_magnifier = wait.until(expected_conditions.element_to_be_clickable((By.XPATH, '//*[@id="title-
overview-widget'
File "C:\Users\Kurdman\Desktop\Poster Downloader\Main\venv\lib\site-
packages\selenium\webdriver\support\wait.py", line 80, in until
raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message:
Интересно, почему я получаю эту ошибку, потому что «for l oop» отлично работает для 10 фильмов, потом внезапно прекращается. Даже если я установил счетчик примерно на 100, чтобы начать со 100-го mov ie, он работает для некоторых из них, а затем снова останавливается и выдает эту ошибку.
Кстати, мой mov ie имена в таком формате: Ajami (2009) - Scandar Copti - Foreign Language Oscar Nominee
поэтому я фильтрую имена, чтобы удалить дату выпуска, имена режиссеров и другие вещи, найдя индекс первой круглой скобки в заголовке.