2009-04-14 6 views
13

私はちょうどPythonを学んでおり、これがどのように達成できるかに興味があります。回答を検索中に、私は、このサービスに出くわした:http://www.longurlplease.com例えばPython:これらのTinyURL(bit.ly、tinyurl、ow.ly)を完全なURLに変換してください

:私はいくつかは、Firefoxで検査していることを見なかった

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

http://bit.ly/rgCbfはに変換することができます元のURLはヘッダーにありません。

+1

何が問題なのですか? –

答えて

33

これを行うための最も簡単な方法は提供していますurllib2、入力します。これは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' 

を:

>>> 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 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はHEADをすることができますが、httplibはそうではありませんが、私は信じています。 –

+0

ああ、そうです。ありがとう。 –

+1

更新されました、httplibはHEADについて文句を言っていませんでした。 –

関連する問題