Python + селен скачать образ без расширения

Вот отличная версия, основанная на некотором коде выше, на случай, если это поможет. Во всяком случае, это коротко. Условно включает голову и хвост (если они не пусты). Последняя часть представляет собой демонстрационный / тестовый сценарий.

List splitWithTokens(str, pat) {
    def tokens=[]
    def lastMatch=0
    def m = str=~pat
    while (m.find()) {
      if (m.start() > 0) tokens << str[lastMatch..<m.start()]
      tokens << m.group()
      lastMatch=m.end()
    }
    if (lastMatch < str.length()) tokens << str[lastMatch..<str.length()]
    tokens
}

[['<html><head><title>this is the title</title></head>',/<[^>]+>/],
 ['before<html><head><title>this is the title</title></head>after',/<[^>]+>/]
].each { 
   println splitWithTokens(*it)
}
0
задан Todor Minakov 19 January 2019 в 04:10
поделиться

1 ответ

Ошибка, которую вы получаете, когда попытка загрузки происходит из-за того, что вызов 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')

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

0
ответ дан Todor Minakov 19 January 2019 в 04:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: