使用请求库在python中扩展短网址

时间:2019-06-28 14:55:33

标签: python-3.x python-requests user-agent

我有很多短网址,我想扩展它们。我在网上某处(我错过了源代码)发现以下代码:

short_url = "t.co/NHBbLlfCaa"
r = requests.get(short_url)
if r.status_code == 200:
    print("Actual url:%s" % r.url)

它完美地工作。但是,当我对同一台服务器执行多次ping操作时,我会收到此错误:

  

urllib3.exceptions.MaxRetryError:   HTTPConnectionPool(host ='www.fatlossadvice.pw',port = 80):最多重试   网址超出:   /提示/杀害了跑步机锻炼字到TIMMY-GACQUIN.ASP(导致   通过NewConnectionError(':无法建立新的连接:[Errno   11004] getaddrinfo失败',))

我尝试了许多解决方案,例如此处的设置:Max retries exceeded with URL in requests,但没有任何效果。

我在考虑另一种解决方案,即在请求中传递用户代理,每次我随机更改它(使用大量用户代理)时:

user_agent_list = [
        'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0',
        'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:25.0) Gecko/20100101 Firefox/25.0',
        'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0',
        'Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1667.0 Safari/537.36',
    ]

r = requests.get(short_url, headers={'User-Agent': user_agent_list[np.random.randint(0, len(user_agent_list))]})
if r.status_code == 200:
    print("Actual url:%s" % r.url)

我的问题是 r.url 总是返回短网址,而不是长网址(扩展网址)。

我想念什么?

1 个答案:

答案 0 :(得分:1)

您可以通过向allow_redirects=False方法中添加requests.get()来防止错误,以防止重定向到不存在的页面(从而引发错误)。您必须检查服务器自己发送的标头(将XXXX替换为https,删除空格):

import requests

short_url = ["XXXX t.co /namDL4YHYu",
 'XXXX t.co /MjvmV',
 'XXXX t.co /JSjtxfaxRJ',
 'XXXX t.co /xxGSANSE8K',
 'XXXX t.co /ZRhf5gWNQg']

for url in short_url:
    r = requests.get(url, allow_redirects=False)
    try:
        print(url, r.headers['location'])
    except KeyError:
        print(url, "Page doesn't exist!")

打印:

XXXX t.co/namDL4YHYu http://gottimechillinaround.tumblr.com/post/133931725110/tip-672
XXXX t.co/MjvmV Page doesn't exist!
XXXX t.co/JSjtxfaxRJ http://www.youtube.com/watch?v=rE693eNyyss
XXXX t.co/xxGSANSE8K http://www.losefattips.pw/Tips/My-stretch-before-and-after-my-workout-is-just-as-important-to-me-as-my-workout.asp
XXXX .co/ZRhf5gWNQg http://www.youtube.com/watch?v=3OK1P9GzDPM