如何取消对URL的排序?

2024-05-15 11:47:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我想能够采取缩短或非缩短的网址,并返回其未缩短的形式。如何制作一个python程序来执行此操作?

补充说明:

  • 案例1:缩短-->;未排序
  • 案例2:未排序-->;未排序

例如,输入数组中的bit.ly/silly应该是输出数组中的google.com
e、 g.输入数组中的google.com应该是输出数组中的google.com


Tags: gt程序com排序googlelybit数组
3条回答

向URL发送HTTP HEAD请求并查看响应代码。如果代码是30x,请查看Location头以获取未排序的URL。否则,如果代码是20x,则不会重定向URL;您可能还希望以某种方式处理错误代码(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

使用请求:

import requests

session = requests.Session()  # so connections are recycled
resp = session.head(url, allow_redirects=True)
print(resp.url)

Unshorten.me有一个api,允许您发送JSON或XML请求并获取返回的完整URL。

相关问题 更多 >