使用Python请求收到空的Json响应

时间:2015-01-21 06:30:52

标签: json python-2.7 python-requests

zhihu,一个类似于Quora的中国问答社区,我正在编写一个小程序来创建关注特定用户的用户列表。在显示此信息的页面上,通过向下滚动到底部,浏览器发送一个帖子请求并在json中接收响应以扩展关注者列表。

收到的json的片段是(从萤火虫复制):

{"r":0,"msg":["<div class=\"zm-profile-card zm-profile-section-item zg-clear no-hovercard\">\n<div class=\"zg-right\">\n<button data-follow=\"m:button\" data-id=\"f09ebe71535bd89a43dd979c77cf3676\" class=\"zg-btn zg-btn-unfollow zm-rich-follow-btn small nth-0\">\u53d6\u6d88\u5173\u6ce8<\/button>.....

我对json知之甚少,但我确信'msg'包含有关粉丝的信息。

在我的程序中,我使用Python Requests module将此发布请求发送到服务器。

payload={"method":"next","params":params,"_xsrf":_xsrf}#form data 
response=session.post('http://www.zhihu.com/node/ProfileFollowersListV2',data=payload,headers=header)

响应的状态代码为200,但response.json()返回:

{u'msg': [], u'r': 0}

其中'msg'为空。任何人都可以帮我这个吗?

1 个答案:

答案 0 :(得分:1)

当我尝试获取返回的json文件中的内容时遇到了这个问题。要解决这个问题,你只需要调整一件事。

payload={"method":"next","params":params,"_xsrf":_xsrf}

注意参数。你没告诉我们究竟是什么。既然你和我有同样的问题,我会假设你的参数看起来像这样,

params = json.dumps({"offset":20,"order_by":"created","hash_id":"blablabla"})

这是最重要的一个。您的“offset”值必须是整数,在这种情况下为20,但绝对不是字符串,例如“20”。当每个元素都被双引号时,很难分辨出出了什么问题。

请记住,“offset”的值必须是整数!

"offset":20