在 Python 3.5 中使用 urllib 获取网页的最终重定向
Posted
技术标签:
【中文标题】在 Python 3.5 中使用 urllib 获取网页的最终重定向【英文标题】:Using urllib to get the final redirect of a webpage in Python 3.5 【发布时间】:2017-12-08 01:37:09 【问题描述】:在this post 中,我尝试将网页的最终重定向为:
import urllib.request
response = urllib.request.urlopen(url)
response.geturl()
但这不起作用,因为我在尝试使用 urlopen
时收到“HTTPError: HTTP Error 300: Multiple Choices”错误。
请参阅这些方法的文档here。
编辑:
这个问题与Python: urllib2.HTTPError: HTTP Error 300: Multiple Choices 的问题不同,因为它们跳过了导致错误的页面,而我必须获得最终目的地。
【问题讨论】:
为什么不使用 requests 库?处理这种情况要容易得多 Python: urllib2.HTTPError: HTTP Error 300: Multiple Choices的可能重复 @mx0 该帖子解决了同样的问题,但是当他们跳过重定向页面时,我实际上必须点击链接并获得最终目的地。 【参考方案1】:按照@abccd 的建议,我使用了requests
库。所以我将描述解决方案。
import requests
url_base = 'something' # You need this because the redirect URL is relative.
url = url_base + 'somethingelse'
response = requests.get(url)
# Check if the request returned with the 300 error code.
if response.status_code == 300:
redirect_url = url_base + response.headers['Location'] # Get new URL.
response = requests.get(redirect_url) # Make a new request.
【讨论】:
以上是关于在 Python 3.5 中使用 urllib 获取网页的最终重定向的主要内容,如果未能解决你的问题,请参考以下文章