2009-04-14 5 views
13

저는 방금 Python을 배우며 이것이 성취 될 수있는 방법에 관심이 있습니다. 예를 들어 http://www.longurlplease.comPython : TinyURL (bit.ly, tinyurl, ow.ly)을 전체 URL로 변환하십시오.

: 대답에 대한 검색 동안, 나는이 서비스를 통해 온

http://bit.ly/rgCbf을 변환 할 수 있습니다 :

http://webdesignledger.com/freebies/the-best-social-media-icons-all-in-one-place

내가 한 몇 가지 파이어 폭스와 검사 볼 것을 원래 URL은 헤더에 없습니다. 하지만,

>>> import httplib 
>>> conn = httplib.HTTPConnection('bit.ly') 
>>> conn.request('HEAD', '/rgCbf') 
>>> response = conn.getresponse() 
>>> response.getheader('location') 
'http://webdesignledger.com/freebies/the-best-social-media-icons-all-in-one-place' 

그리고 PycURL로를 :이 httplib로도 가능 있습니다, 그러나, 참조를 위해서

>>> import urllib2 
>>> fp = urllib2.urlopen('http://bit.ly/rgCbf') 
>>> fp.geturl() 
'http://webdesignledger.com/freebies/the-best-social-media-icons-all-in-one-place' 

:

+1

무엇이 문제입니까? –

답변

33

는이 일을하는 가장 쉬운 방법을 제공 urllib2를 입력 이것이 이것을 사용하는 최선의 방법인지 확실하지 않습니다.

>>> import pycurl 
>>> conn = pycurl.Curl() 
>>> conn.setopt(pycurl.URL, "http://bit.ly/rgCbf") 
>>> conn.setopt(pycurl.FOLLOWLOCATION, 1) 
>>> conn.setopt(pycurl.CUSTOMREQUEST, 'HEAD') 
>>> conn.setopt(pycurl.NOBODY, True) 
>>> conn.perform() 
>>> conn.getinfo(pycurl.EFFECTIVE_URL) 
'http://webdesignledger.com/freebies/the-best-social-media-icons-all-in-one-place' 
+5

페이지 내용을 전송하지 않으려면 GET 대신 HEAD 요청을 사용하는 것이 좋습니다. urlib와 curl은 httplib가 없어도 HEAD를 할 수 있습니다. –

+0

아, 네. 감사. –

+1

업데이트 됨, httplib은 HEAD에 대해 불평하지 않았습니다 ... 그것이 그녀의 말입니다. –

관련 문제