2012-05-26 3 views
0

Я ищу быстрый способ получить код ответа http из URL-адреса. Если код равен 200, загрузите изображения. Могу ли я получить код ответа с помощью MyOpener`? tahnksполучить код ответа от FanycURLLoader

from urllib import FancyURLopener 
class MyOpener(FancyURLopener): 
    version = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11' 


myopener = MyOpener() 
myopener.retrieve('http://upload.wikimedia.org/wikipedia/en/4/44/Zindagi1976.jpg', 'Zindagi1976.jpg') 

UPDATE:

>>> import urllib 
>>> resp = urllib.urlopen("http://upload.wikimedia.org/wikipedia/en/4/44/Zindagi1976.jpg") 
>>> print resp.getcode() 
403 

ответ

0

Что случилось с этим, или я получил ваш вопрос неправильно.

>>> import urllib 
>>> resp = urllib.urlopen("http://docs.python.org/library/urllib.html") 
>>> if resp.getcode() == 200: 
...  print "do my stuff" 
... 
do my stuff 
>>> 

Приятно, что вы проделали свой путь вокруг проблемы. Существует причина, по которой wikimedia дает 403 в качестве кода ответа. Причина в том, что как только вы отправляете запрос на доступ к содержимому wikimedia, он понимает, что этот запрос не отправляется browser, поэтому он выдает ошибку 403.

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

Для того, чтобы сделать так, как будто браузер отправляет запрос, вы можете добавить User-Agent в свой код на Python.

>>> import urllib2 
>>> req = urllib2.Request('http://upload.wikimedia.org/wikipedia/en/4/44/Zindagi1976.jpg') 
>>> useragent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11' 
>>> req.add_header('User-Agent',useragent) 
>>> resp = urllib2.urlopen(req) 
>>> resp.getcode() 
200 
>>> data = resp.read() 
>>> with open("image.jpg","wb") as f: 
...  f.write(data) 
... 
>>> 
+0

'urllib' не работает с википедией. Я получаю сообщение об ошибке «403». – Shah

+0

@RangRag Я добавил «FancyURL». Теперь это сработало. спасибо anyways – Shah

+0

@Richard: Приятно слышать это, но взгляните на мое редактирование. – RanRag

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