UlrLib Загрузка изображения Неподдерживаемый формат - PullRequest
0 голосов
/ 08 июня 2018

хотел создать инструмент для сохранения изображений по определенной ссылке, но обнаружил проблему.

Мой код следующий:

import urllib

urllib.urlretrieve(url, "img.jpg")

Дело в том, что если яиспользуйте любую ссылку из Google, она работает без нареканий.

Например:

link - работает

Но если я хочу получить это конкретное изображение:

link

Сохраняет файл как .jpg, но когда я хочу открыть его, я получаю неподдерживаемый формат файла.Любые идеи о том, как это исправить или в чем причина?

1 Ответ

0 голосов
/ 08 июня 2018

Проблема в том, что веб-сайт блокирует загрузку на основе сигнатуры браузера.Переименуйте ваш img.jpg файл в page.html и откройте в браузере, тогда вы увидите что-то вроде этого:

Ошибка 1010 Идентификатор луча: xxxxxxxxx • 2018-06-08 10:39:01UTC

Доступ запрещен

Что случилось?

Владелец этого сайта (asset.keepeek-cache.com) заблокировал вам доступ на основании подписи вашего браузера (xxxxxxxxxx).

Идентификатор луча Cloudflare: xxxxxxxxxx • Ваш IP: xx.xx.xx.xx • Производительность и безопасность Cloudflare

После того, как вы подумали, хотите ли вы, возможно, противоречить ИнтернетуПо желанию владельца сайта вы можете изменить своего пользовательского агента, выполнив (например)

import urllib

# Change user agent to look like Firefox
urllib.URLopener.version = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11'
# Download file with new user agent
urllib.urlretrieve(url, "img.jpg")

, что решило проблему для меня.

...