2012-05-26 7 views
0

URL에서 http 응답 코드를 빠르게 얻을 수있는 방법을 찾고 있습니다. 코드가 200 '이면 이미지를 다운로드하십시오. MyOpener`로 응답 코드를 얻을 수 있습니까? tahnksFanycURLLoader에서 응답 코드 받기

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 
>>> 

문제를 해결해 주셔서 감사합니다. 응답 코드로 wikimedia403 인 이유가 있습니다. 이유는 위키 미디어의 콘텐츠에 대한 액세스 요청을 보내 자마자이 요청이 browser에 의해 보내지지 않아서 403 오류가 발생합니다.

웹 사이트는 봇이 내용에 액세스하지 못하도록하기 위해 이러한 유형의 검사를 수행합니다. 다른 많은 수표가 있으며 User-Agent이 그 중 하나입니다.

그래서 브라우저처럼 요청하면 User-Agent을 파이썬 코드에 추가 할 수 있습니다.

>>> 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'을 추가했습니다. 이제 효과가있었습니다. 어쨌든 고마워요. – Shah

+0

@ 리차드 : 듣기 좋네요. 제 편집을 한번보세요. – RanRag