У меня есть файл со ссылками и мне нужно сделать скриншоты страниц. Но мой код не хочет сохранять изображения. Код работает без ошибок, но выходная папка пуста.
from selenium import webdriver
browser = webdriver.Chrome(r'C:\webdrivers\chromedriver.exe')
browser.set_page_load_timeout(100)
browser.maximize_window()
file = open('links.txt', 'r', encoding = "ISO-8859-1")
urls = file.readlines()
for url in urls:
url = url.strip ('\n')
try:
browser.get(url)
except:
print(url + ' took too long')
else:
# where images saved
browser.save_screenshot(r'C:\Users\krupn\Desktop\CreateWord\screenshots' + url + '.png')
browser.quit()





Убедитесь, что python не сталкивается с проблемой разрешений для записи на рабочий стол (запустите от имени администратора или попробуйте еще раз, за исключением попытки записи скриншота, и распечатайте любое исключение, которое может возникнуть при записи).
Также вы можете написать каталог над тем, что вы думаете, и создать файл с именем C:\Users\krupn\Desktop\CreateWord\screenshots[url].png (где [url] — ваша переменная URL).
Вы можете соединить свои пути с помощью os.join следующим образом:
import os
os.path.join(r'C:\Users\krupn\Desktop\CreateWord\screenshots\', "{}.png".format(url))
Также было бы разумно очистить строку URL-адреса перед использованием ее как части пути, если есть какие-либо косые черты или недопустимые символы, которые могут объяснить, почему сохранение снимка экрана не работает.
Спасибо пользователю Кори Голдбергу за указание на то, что в примере os.path.join отсутствовал необходимый r перед строкой, поэтому обратная косая черта не действовала как escape-символы.
Как заявил OP, ошибок не возникает. Выполнение try/catch только для вывода ошибки даст меньше информации, так как python все равно пройдет через нее с трассировкой.
@NicLaforge справедливо отмечает, что селен не обрабатывает внутри себя ошибки, такие как потенциально недопустимые имена файлов. Если вы уверены, что это не так, вы абсолютно правы.
в вашем примере os.join используется обратная косая черта, которая является escape-символом. вам нужно либо сделать путь необработанной строкой, избежать обратной косой черты, либо заменить их косой чертой.
@CoreyGoldberg Спасибо, что указали на это. Я исправил это и добавил кредит на ваше исправление.
У вас может возникнуть проблема с тем, как вы создаете путь к файлу. Можете ли вы предоставить URL-адрес. Может быть полезно использовать os.path.join(directory, url + .png) (Безопаснее)