之前,写的一篇文章 《Python实现的站内消息群发助手-V1.0》,刚刚用了两三次,就遇到网站改版了,今天有空重来一遍,再写写这个功能。遇到了requests的post提交json数据的问题,没有解记,先记录下来。
还是三步:
- 在用户主页上获取“发送简信”的url(
chats/new?mailto=xxx
),这一步很容易获取
- 打开
chats/new?mailto=xxx
,获取chat_id - POST提交,发送站内信
以上都需要登录操作,还是用Cookie登录方式。
第二步,通过mailto的id,获取chat_id,解析直接获取的url找不到,页面的源代码中也找不到,还是chrome检查,一步步分析network,这里加载的是json数据。
测试出来正解的url应该是,chats/new.json?mailto=xxx
,就解析获取到chat_id
第三步,分析发送简信的url是http://www.jianshu.com/chats/chat_id/chat_message
,post提交json数据
data ={"chat_message":{"content":"hello...."}}
requests.post(posturl, data=json.dumps(data), headers=headers)
还是发送不成功,post返回的是404。查了一下网上的类似的解决:
- header指明要以json方式发送
"Content-Type": "application/json"
* 加上 application/x-www-form-urlencoded
"Content-Type": "application/x-www-form-urlencoded"
以上方式都调试还是不能成功发送,只能先存疑了。之前是表单POST方式,构造表单字段即可。不知道json数据在提交时还在注意什么,希望看到的童鞋帮忙了。