Модуль Python Requests заканчивается странным перенаправлением - PullRequest
0 голосов
/ 31 января 2012

Выполнение запроса GET с помощью модуля python Запросы заканчиваются странным 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. Но, используя RestKit для того же URL, 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"

В чем проблема с запросами?

Ответы [ 2 ]

2 голосов
/ 31 января 2012

Это будет работать правильно, если вы установите текущую главную ветку из https://github.com/kennethreitz/requests.git вместо последней версии с тегами.

Запросы неверно цитируют тильды в последнем 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

0 голосов
/ 31 января 2012

Работает здесь:

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
...