2016-12-02 3 views
0

Я столкнулся со странной ошибкой: urllib2 ловит ошибку 404, открывая действительный URL-адрес. Я попробовал его в браузере, url можно открыть. Также я передаю user-agent.urllib2 ловит ошибку 404, пока существует URL

import urllib.request as urllib2 
uri = 'https://i.ytimg.com/vi/8Sii8G5CNvY/hqdefault.jpg?custom=true&w=196&h=110&stc=true&jpg444=true&jpgq=90&sp=68&sigh=OIIIAPOKNtx1OiZbAqdORlzl92g' 
try: 
    req = urllib2.Request(uri, headers={ 'User-Agent': 'Mozilla/5.0' }) 
    file = urllib2.urlopen(req) 
except urllib2.HTTPError as err: 
    if err.code == 404: 
    return "Not Found" 

Почему я получаю эту ошибку? Спасибо за ответы.

+1

Ну, если вы испытываете Ури на некоторых продвинутых клиента HTTP или откройте консоль разработки вашего веб-браузера, он выдает вам ошибку 404. Кажется, хорошо работает. – fernandezr

+2

Сервер, к которому вы пытаетесь получить доступ, действует странно: он отвечает 404, за которым следует фактический файл. Инструмент командной строки 'wget' не может получить документ, но« завиток »его получает. В коде нет ничего плохого, очевидно, что 'urllib2' не был предназначен для обработки подобных ситуаций. – DyZ

+0

Но как я могу скачать его, если это была ошибка 404? Могу ли я просто сделать data = file.read (1024)? –

ответ

1

Если вы хотите, чтобы получить тело в любом случае, просто прочитать ответ об ошибке с err.read():

import urllib2 
uri = 'https://i.ytimg.com/vi/8Sii8G5CNvY/hqdefault.jpg?custom=true&w=196&h=110&stc=true&jpg444=true&jpgq=90&sp=68&sigh=OIIIAPOKNtx1OiZbAqdORlzl92g' 
try: 
    req = urllib2.Request(uri, headers={ 'User-Agent': 'Mozilla/5.0' }) 
    file = urllib2.urlopen(req) 
except urllib2.HTTPError as err: 
    if err.code == 404: 
    print "Not Found" 
    print err.read() 

 Смежные вопросы

  • Нет связанных вопросов^_^