对于给定的 url,如何在 HTTP 重定向后检测最终的 Internet 位置,而不使用 python 下载最终页面(例如 HEAD 请求。)。我正在尝试编写一个海量下载器,我的下载机制需要在下载之前知道页面的互联网位置。
编辑
我最终这样做了,我希望这对其他人有所帮助。我仍然对其他方法持开放态度。
import urlparse
import httplib
def getFinalUrl(url):
"Navigates Through redirections to get final url."
parsed = urlparse.urlparse(url)
conn = httplib.HTTPConnection(parsed.netloc)
conn.request("HEAD",parsed.path)
response = conn.getresponse()
if str(response.status).startswith("3"):
new_location = [v for k,v in response.getheaders() if k == "location"][0]
return getFinalUrl(new_location)
return url