2009-04-14 7 views
13

में कनवर्ट करें, मैं सिर्फ अजगर सीख रहा हूं और इसमें यह रुचि हो सकती है कि यह कैसे पूरा किया जा सकता है। http://www.longurlplease.comपायथन: उन TinyURL (bit.ly, tinyurl, ow.ly) को पूर्ण URLS

उदाहरण के लिए:: जवाब के लिए खोज के दौरान, मैं इस सेवा में आए

http://bit.ly/rgCbf में बदला जा सकता:

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

मैंने किया था कुछ Firefox के साथ निरीक्षण और देखते हैं कि मूल यूआरएल हेडर में नहीं है।

+1

सवाल क्या है? –

उत्तर

33

urllib2 है, जो ऐसा करने का सबसे आसान तरीका प्रदान करता है दर्ज करें:,

>>> 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 साथ हालांकि: संदर्भ के खातिर

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

हालांकि, ध्यान दें कि यह httplib के साथ संभव है, मुझे यकीन नहीं है कि यह इसका उपयोग करने का सबसे अच्छा तरीका है:

>>> 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 अनुरोध का उपयोग करना बेहतर विचार है। urllib और कर्ल सिर कर सकते हैं, हालांकि httplib नहीं है, मुझे विश्वास है। –

+0

आह, हाँ। धन्यवाद। –

+1

अपडेट किया गया, प्रेजेंटप्लिब ने हेड के बारे में शिकायत नहीं की ... उसने यही कहा। –

संबंधित मुद्दे