从python请求的响应中获取价值

时间:2015-07-14 03:34:46

标签: python response python-requests

我正在使用请求,而我正在尝试获取响应(如Chrome上的“网络”标签上所示)

url = r"https://wwww.mylocal.com/345523"
authKey = base64.b64encode("testu:pwd$u")
headers = {"Content-Type":"application/json", "Authorization":"Basic " + "YWRtaW46OWJKTmp5WUxKc1A0dlJ1dTd2Mk0"}
data = { "id":444}
r = requests.get(url, headers=headers, params = data)
print r.content

但我一直在获取页面的HTML,我希望获得实际的响应。使用r.content时,我收到一条消息,说明对象无法解码,这是有道理的,因为r.content检索源代码而不是实际响应。有办法实现吗? 我在网络选项卡上看到的响应类似于:

{"search_results": {"@xmlns": "http://mylocal.com/345523", "ColorsInfo": {"bgColor": "552448"}}

我想要检索的是bgcolor的值,但在r.content上我得到了网页的Html内容。

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
...and so on

2 个答案:

答案 0 :(得分:0)

我的第一个猜测是,您所获得的是一个登录表单,因为您尚未正确登录该网站。

您可以通过阅读html或将html写入文件并在浏览器中打开它来验证这种情况。

如果我的怀疑是正确的,请查看请求会话对象(http://docs.python-requests.org/en/latest/user/advanced/),通过表单发布用户名和密码,就像在浏览器中一样,然后请求上面的数据。

答案 1 :(得分:0)

解决了! 参数必须是一个字符串,所以正确的代码:

url = r"https://wwww.mylocal.com/345523"
authKey = base64.b64encode("testu:pwd$u")
headers = {"Content-Type":"application/json", "Authorization":"Basic " + "YWRtaW46OWJKTmp5WUxKc1A0dlJ1dTd2Mk0"}
data = { "id":"444"}
r = requests.get(url, headers=headers, params = data)
print r.content