Я пытаюсь использовать Python3.7.4 для резервного копирования изображений на сайте блога, например, http://s2.sinaimg.cn/mw690/001H6t4Fzy7zgC0WLXb01&690 Если я введу вышеуказанный адрес в адресную строку Firefox, файл будет показан правильно. Если я использую следующий код для загрузки рисунка, сервер всегда перенаправляет на изображение по умолчанию:
from requests import get # just to try different methods
from urllib.request import urlopen
from urllib.parse import urlsplit, urlunsplit, quote
# hard-coded address is randomly selected for debug purpose.
origPict = 'http://s2.sinaimg.cn/mw690/001H6t4Fzy7zgC0WLXb01&690'
p = urlsplit (origPict)
newP = quote (p.path)
origPict = urlunsplit ([p.scheme, p.netloc, newP, p.query, p.fragment])
try:
#url_file = urlopen(origPict)
#u = url_file.geturl ()
url_file = get (origPict)
u = url_file.url
if u != origPict:
raise Exception ('Failed to get picture ' + origPict)
...
Любая подсказка, почему запросам.get или urllib.urlopen не нравится '&' в URL?
Обновления: спасибо за комментарии Артура, я понимаю, что вопрос не в самом запросе, а в механизме защиты сайта: js или cookie-файлы или что-то еще в обратной связи веб-страницы на сервер, чтобы он мог судить, поступает ли запрос со скребка. Поэтому теперь возникает вопрос, как очистить изображение с веб-страницы, что сложнее, чем просто загрузить изображение с URL.