python语言的主网址-python如何获得一个url地址对应的跳转后的最终网址

问 题

在python中,如何获取短链对应最终网址,现在有很多淘宝短链,我需要获取短链跳到的最终网址,这个有什么好办法吗?有的是302 有的是直接在网页用js进行跳转,,这些如何获取

解决方案

用selenium+phantonjs...

#!/usr/bin/python2.7

from twisted.internet import reactor

from twisted.internet.defer import Deferred, DeferredList, DeferredLock

from twisted.internet.defer import inlineCallbacks

from twisted.web.client import Agent, HTTPConnectionPool

from twisted.web.http_headers import Headers

from pprint import pprint

from collections import defaultdict

from urlparse import urlparse

from random import randrange

import fileinput

pool = HTTPConnectionPool(reactor)

pool.maxPersistentPerHost = 16

agent = Agent(reactor, pool)

locks = defaultdict(DeferredLock)

locations = {}

def getLock(url, simultaneous = 1):

return locks[urlparse(url).netloc, randrange(simultaneous)]

@inlineCallbacks

def getMapping(url):

# Limit ourselves to 4 simultaneous connections per host

# Tweak this as desired, but make sure that it no larger than

# pool.maxPersistentPerHost

lock = getLock(url,4)

yield lock.acquire()

try:

resp = yield agent.request('HEAD', url)

locations[url] = resp.headers.getRawHeaders('location',[None])[0]

except Exception as e:

locations[url] = str(e)

finally:

lock.release()

而且可以试试pip包

from urlunshort import resolve

resolve("http://bit.ly/qlKaI") 结果 'http://bitbucket.org/runeh/urlunshort/'

wx.jpg

扫一扫关注IT屋

微信公众号搜索 " IT屋 ” ,选择关注与百万开发者在一起