Python. Фото скачивается, но оно сломано
Python. Фото скачивается, но оно сломано, то есть вместо изображения знак сломанной картинки. Что делать? Код:
import requests
url = "https://thiscatdoesnotexist.com/?1582681489783=1/document.jpg"
res = requests.get(url).content
with open(url.split('/')[-1].split('?')[0], 'wb') as f:
f.write(res)
Ответы (2 шт):
Автор решения: nomnoms12
→ Ссылка
Добавьте заголовок User-Agent.
Пример:
import requests
URL = 'https://thiscatdoesnotexist.com/?1582681489783=1/document.jpg'
HEADERS = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.136 YaBrowser/20.2.3.213 Yowser/2.5 Safari/537.36',
}
def main():
photo = requests.get(URL, headers=HEADERS).content
filename = URL.split('/')[-1]
with open(filename, 'wb') as f:
f.write(photo)
if __name__ == '__main__':
main()
Автор решения: Михаил Муругов
Первая догадка: сервер не ожидал в заголовке
→ Ссылка
При res = requests.get(url) код ответа 520. Это значит, что на удалённом сервере произошла какая-то внутренняя ошибка.
Первая догадка: сервер не ожидал в заголовке
User-Agent увидеть значение python-requests/2.22.0 (такой User-Agent отправляется по умолчанию, если его явно не указали). Можно попробовать отправить User-Agent какого-нибудь браузера. Например, Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36
res = requests.get(
url,
headers={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36"
}
)
В таком случае код ответа 200. Это говорит о том, что всё хорошо. Можно записывать content ответа в файл
with open(url.split('/')[-1].split('?')[0], 'wb') as f:
f.write(res.content)