#python-3.x #selenium #screenshot
#python-3.x #selenium #скриншот
Вопрос:
У меня есть файл со ссылками, и мне нужно сделать скриншоты страниц. Но мой код не хочет сохранять изображения. Код выполняется без ошибок, но папка вывода пуста.
from selenium import webdriver
browser = webdriver.Chrome(r'C:webdriverschromedriver.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:UserskrupnDesktopCreateWordscreenshots' url '.png')
browser.quit()
Комментарии:
1. Возможно, у вас проблема с тем, как вы генерируете путь к файлу. Можете ли вы предоставить вывод URL-адреса. Было бы неплохо использовать os.path.join(каталог, url .png) (безопаснее)
Ответ №1:
Убедитесь, что python не запущен из-за проблемы с разрешениями для записи на рабочий стол (запустите от имени администратора или попробуйте еще раз, кроме попытки записи скриншота, и выведите любое исключение, которое может возникнуть при записи).
Также вы можете записать каталог выше того, что вы думаете, и создать файл с именем C:UserskrupnDesktopCreateWordscreenshots [url].png (где [url] — это ваша переменная url).
Вы можете объединить свои пути с помощью os.присоединяйтесь вот так:
import os
os.path.join(r'C:UserskrupnDesktopCreateWordscreenshots', "{}.png".format(url))
Также было бы разумно очистить строку вашего URL, прежде чем использовать ее как часть пути, если есть какие-либо косые черты или недопустимые символы, которые могли бы объяснить, почему сохранение скриншота не работает.
Спасибо пользователю Corey Goldberg за указание на то, что в примере os.path.join отсутствовал необходимый r, добавляющий строку, чтобы обратная косая черта не действовала как escape-символы
Комментарии:
1. Как указано в OP, ошибка не генерируется. Выполнение попытки / перехвата только для печати ошибки предоставило бы меньше информации, поскольку python в любом случае обработает ее с помощью обратной трассировки.
2. @NicLaforge справедливое замечание, если selenium внутренне не обрабатывает ошибки, такие как потенциально недопустимые имена файлов. Если вы уверены, что это не так, вы абсолютно правы.
3. в вашем
os.join
примере используются обратные косые черты, которые являются escape-символом. вам нужно либо сделать путь необработанной строкой, экранировать обратную косую черту, либо заменить их косыми чертами в прямом направлении.4. @CoreyGoldberg Спасибо, что указали на это. Я исправил это и добавил благодарность за ваше исправление.