如何从请求中获取原始URL

Dav*_*542 7 python python-requests

在执行以下操作:

>>> res=requests.get('http://www.hulu.com/return-of-the-one-armed-swordsman')
>>> res.url
u'http://www.hulu.com/watch/800769'
Run Code Online (Sandbox Code Playgroud)

我如何获得调用的原始URL res.也就是说,我如何让res对象返回http://www.hulu.com/return-of-the-one-armed-swordsman

Jon*_*nts 14

requests 保留重定向请求的历史记录...从中获取第一个条目...

import requests

res=requests.get('https://httpbin.org/status/301')
res.url
# https://httpbin.org/get
res.history[0].url
# https://httpbin.org/status/301
Run Code Online (Sandbox Code Playgroud)

注意 - 您可能希望满足没有重定向的位置,例如:

url = res.history[0].url if res.history else res.url
Run Code Online (Sandbox Code Playgroud)

当然 - 另一种方法是将您的URL保存在变量中并将其传递给requests.get- 然后您知道您要求的开始...

  • @Stefan 确定,或者甚至`(res.history or [res])[0].url` 来避免列表连接,如果你真的想沿着这条路线走,但它并不像“条件if”那么容易理解语法(恕我直言) (2认同)