【问题标题】:Strange return using the "requests" python package? How to fix?使用“请求”python 包的奇怪返回?怎么修?
【发布时间】:2012-04-04 11:10:33
【问题描述】:

我已经安装了名为 requests 的 python 包。 (pip install -i http://pip.kennethreitz.com/simple 请求)

首先,我尝试使用普通用户($)但没有成功,所以我尝试了根用户(#)并成功了。

问题出在使用上。当我尝试像

这样的简单代码时
$python
>>>import requests
>>>r = requests.get('http://www.google.com')
>>>r.content

我得到了一个令人难以置信的烦人结果(请参阅此pastebin link。)

但是使用root

$sudo python
>>>import requests
>>>r = requests.get('http://www.google.com')
>>>r.content

我得到了正确合理的结果:pastebin

我该如何解决这个问题? urllib.urlencode 也会发生这种情况。 (可能是使用 sudo easy_install 安装的,但我不记得了)。

我在 /usr/local/lib/python2.6/dist-packages/usr/local/lib/python2.6/site-packages 但还是有同样的问题。

我真的认为问题出在 python 包上,因为这些代码非常简单。

系统详情:

Python 2.6.5

Ubuntu LTS 10.04.4

请求包 0.7.5

【问题讨论】:

  • 如果这两种情况都发生,那么这不是 Python 问题。
  • 也许不是。但是,正如我所写,代码运行良好。但是只要使用root,有什么问题。
  • 试试unicode(r.content, "utf-8")r.content.encode("utf-8")看看会发生什么。

标签: python request package pip easy-install


【解决方案1】:

您的问题似乎与 unicode 有关。试试r.content.decode('utf-8')

【讨论】:

  • 那时我不知道,第一眼看起来是这样的。
  • @jordoex 使用 r.content.decode('utf-8') 我得到:回溯(最近一次通话最后):文件“”,第 1 行,在 文件“/usr/lib/python2.6/encodings/utf_8.py”中,第 16 行,在 decode 返回 codecs.utf_8_decode(input, errors, True) UnicodeDecodeError: 'utf8' codec can't decode bytes在位置 0-1:无效数据
  • 我将您的原始 pastebin 粘贴转换为二进制并在十六进制编辑器中打开它,这很奇怪。
  • @jordoex 事实是我最初并没有使用 Google。这发生在其他网站上。谷歌只是这个问题的一个例子。我使用 python 2.6.5,Ubuntu LTS 10.04.4,请求包 0.7.5。
  • 是的,从二进制转储来看,它看起来可能是谷歌正在做的事情。否则,我能想到的唯一另一件事就是启动 Wireshark 并查看您发送的标头、接收的标头以及不同之处。我最好的猜测是,这是 requests 包不知道如何正确处理的配置设置。
猜你喜欢
  • 2021-04-21
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 2020-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-03
相关资源
最近更新 更多