我正在使用请求,而我正在尝试获取响应(如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
答案 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