如何还原缩短的URL?
我想要一个程序,可以把缩短的链接或者没有缩短的链接转换成它的完整链接。请问我该如何用Python来实现这个功能呢?
补充说明:
- 情况一:缩短链接变成完整链接
- 情况二:完整链接保持不变
例如,输入数组中的 bit.ly/silly
应该在输出数组中变成 google.com
再比如,输入数组中的 google.com
应该在输出数组中还是 google.com
10 个回答
5
Unshorten.me 提供了一个接口,你可以通过发送一个JSON或XML格式的请求,得到完整的网址作为回复。
34
使用requests库:
import requests
session = requests.Session() # so connections are recycled
resp = session.head(url, allow_redirects=True)
print(resp.url)
40
向这个网址发送一个HTTP的HEAD请求,然后查看返回的状态码。如果状态码是30x,说明这个网址被重定向了,这时你需要查看Location
这个头部信息,里面会有未缩短的网址。如果状态码是20x,那说明这个网址没有被重定向;另外,你可能还需要处理一些错误状态码(比如4xx和5xx),以便更好地应对问题。比如:
# This is for Py2k. For Py3k, use http.client and urllib.parse instead, and
# use // instead of / for the division
import httplib
import urlparse
def unshorten_url(url):
parsed = urlparse.urlparse(url)
h = httplib.HTTPConnection(parsed.netloc)
h.request('HEAD', parsed.path)
response = h.getresponse()
if response.status/100 == 3 and response.getheader('Location'):
return response.getheader('Location')
else:
return url