Python + селен скачать образ без расширения - PullRequest
0 голосов
/ 18 января 2019

Я использую Python 3 с селеном, мне нужно загрузить изображение

HTML:

<img id="labelImage" name="labelImage" border="0" width="672" height="456" alt="labelImage" src="/shipping/labelAction.handle?method=doGetLabelFromCache&amp;isDecompressRequired=false&amp;utype=null&amp;cacheKey=774242409034SHIPPING_L">

Код Python:

found = browser.find_element_by_css_selector('img[alt="labelImage"]') 
src = found.get_attribute('src')
urllib.request.urlretrieve(src, 'image.png')

этот файл изображения пуст, если я пытаюсь переключить расширение на html, отображается сообщение ниже: «К сожалению, мы не можем обработать ваш запрос прямо сейчас. Похоже, у вас нет разрешения на просмотр этой веб-страницы»

1 Ответ

0 голосов
/ 19 января 2019

Ошибка, которую вы получаете, когда попытка загрузки происходит из-за того, что вызов urllib является совершенно новым сеансом для их сервера - у него нет файлов cookie и аутентификации, которые использует ваш браузер. Например. это так же, как если бы вы открыли режим инкогнито в браузере и вставили в адресную строку атрибут src - для сервера вы новый клиент, который не заполнил форму, вошел в систему и т. д.

Возможно, вы захотите попробовать что-нибудь еще - в сеансе селен / браузер, сделав снимок экрана только с элементом <img>. Эта операция с переменным успехом, например, в Chrome добавлена ​​поддержка только недавно, а в некоторых ситуациях она не срабатывает:

found = browser.find_element_by_css_selector('img[alt="labelImage"]')
try:
    found.screenshot('element.png')
except Exception as ex:  # FIXME: anti-pattern - I don't recall the exact exception - when you run the code, change it to the proper one
    print('The correct exception is {}'.format(ex))
    browser.get_screenshot_as_file('page.png')

Если сделать скриншот элемента не удастся, вы получите одну целую страницу, которую затем можете обрезать до элемента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...