0

使用 python 模块 Requests 发出 GET 请求会得到奇怪的 url:

>>> import requests
>>> r = requests.get("http://t.co/Uspy071j")
>>> print r.url
"http://feeds.feedburner.com/%257Er/LesArdoises/%257E3/bD2JuJagz5I/roxino-cest-tout-vert.html?utm_source=twitterfeed&utm_medium=twitter"

此 url 以错误 400 结尾。但对相同的 url 使用 RestKit,final_url 返回正确的值:

>>> import restkit
>>> r = restkit.request("http://t.co/Uspy071j", follow_redirect=True)
>>> print r.final_url
"http://lesardoises.com/6277/roxino-cest-tout-vert.html?utm_medium=twitter&utm_source=twitterfeed"

请求有什么问题?

4

2 回答 2

2

如果您从https://github.com/kennethreitz/requests.git而不是最新的标记版本安装当前主分支,它将正常工作。

Requests 错误地引用了最后一个 URL 中的波浪号。而不是请求http://feedproxy.google.com/~r/LesArdoises/~3/bD2JuJagz5I/roxino-cest-tout-vert.html?utm_source=twitterfeed&utm_medium=twitter它请求http://feeds.feedburner.com /%257Er/LesArdoises/%257E3/bD2JuJagz5I/roxino-cest-tout-vert.html?utm_source=twitterfeed&utm_medium=twitter

我可以使用最新的 Requests 版本(0.10.1)重现这一点,但它似乎已在未发布的主(和开发)分支中修复。

修复此错误的提交是https://github.com/kennethreitz/requests/commit/cb64d311719e627df0f78c8446d40326899206c3

于 2012-01-31T13:14:10.353 回答
0

在这里工作:

In [6]: import requests

In [7]: r = requests.get("http://t.co/Uspy071j")

In [8]: r
Out[8]: <Response [200]>

In [9]: print r.url
http://lesardoises.com/6277/roxino-cest-tout-vert.html?utm_medium=twitter&utm_source=twitterfeed
于 2012-01-31T12:50:47.837 回答