Maison  >  Questions et réponses  >  le corps du texte

Comment obtenir l'URL finale après le saut correspondant à une adresse url en Python

En python, comment obtenir l'URL finale correspondant à un lien court. Il existe maintenant de nombreux liens courts Taobao dont j'ai besoin pour obtenir l'URL finale vers laquelle le lien court renvoie. Certains sont au format 302 et certains sont redirigés directement sur la page Web en utilisant js. Comment les obtenir

.
高洛峰高洛峰2709 Il y a quelques jours1739

répondre à tous(1)je répondrai

  • 黄舟

    黄舟2017-05-19 10:09:33

    Utilisez sélénium+phantonjs...

    http://stackoverflow.com/ques...

    #!/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()
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           

    Et vous pouvez essayer le package pip

    https://pypi.python.org/pypi/...

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

    répondre
    0
  • Annulerrépondre