python - 如何请求已在 python-requests 中进行 URL 编码的 URL?

标签 python utf-8 python-requests urllib urlencode

我正在尝试请求以下 URL:

https://www.sainsburys.co.uk/shop/gb/groceries/shiraz/barossa-valley-estate-grenache-shiraz-mourv%C3%A8dre-75cl

用 urllib 解码并打印它,结果显示:

In [36]: print urllib.unquote(url)
https://www.sainsburys.co.uk/shop/gb/groceries/shiraz/barossa-valley-estate-grenache-shiraz-mourvèdre-75cl

即带重音的“e”。

但似乎无论我对 import requests; requests.get(...) 提出什么要求,然后我得到 404。

给 get 方法的正确输入是什么?

最佳答案

您应该在将 URL 传递给 urrlib unquote 后使用“latin-1”对其进行解码

>>> 
>>> k = "https://www.sainsburys.co.uk/shop/gb/groceries/shiraz/barossa-valley-estate-grenache-shiraz-mourv%C3%A8dre-75cl"
>>> r = requests.get(urllib.unquote(k).decode("latin-1"))
>>> r.status_code
200
>>> 

关于python - 如何请求已在 python-requests 中进行 URL 编码的 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42681090/

相关文章:

Python 特征值和特征向量

python - 图像的 3d 旋转

python - 使用 Python 从 HTML 提供 URL

c++ - 使用 utf8 格式的正则表达式过滤字符串

utf-8 - memcached 客户端抛出 java.lang.IllegalArgumentException : Key contains invalid characters

javascript - Python 提交带有请求的标签

python - 电子邮件解析 : TypeError: parse() takes at least 2 arguments (2 given)

javascript - 使用 angular-js 呈现 unicode-utf-8 土耳其语字符

python - 413 Request Entity too Large - 如何使用python拆分多个文件

python - 通过 SOCKs 代理请求