1.问题

直接来看问题,使用python推送内容到微信公众号的草稿箱时,

已经成功返回:

python 公众号文章字数 python 公众号文章发布_python 公众号文章字数

认为搞定了,打开公众号一看,好家伙,是这样子的。

python 公众号文章字数 python 公众号文章发布_python 公众号文章字数_02

好了,既然你已经找到这儿了,就说明你也遇到这个烦人的问题了,我们都知道是因为编码问题,却不知道怎样解决,而且神奇的是,用postman测时,是不存在这个问题的。

2.解决方法

那么直接看解决方法

我看网上很多帖子,找了好几个小时,终于找到:

(1)post中传入data时,请你把data先进行这样一个处理(我最终是这样解决的

data = bytes(json.dumps(data, ensure_ascii=False).encode('utf-8'))

然后接下来可能会报

python 公众号文章字数 python 公众号文章发布_微信公众平台_03

不要慌,这是因为你原来的这句代码还在:

data=json.dumps(data)

那么,改为data = data即可

可以了的话你就可以走了,下面是一些博主给出的另一个方法,我试了,但是不管用,说不定对你的管用。

(2)在headers中加上’Content-Type’: ‘application/json; charset=utf-8’,如下:

headers = {
    'User-Agent': 这个改成自己的,
    'Content-Type': 'application/json; charset=utf-8'
}

这个方式我试了,但不管用,你可以试试。

3.我的代码

下面,如果以上方法看了却不会改,看看我调好的代码吧,说不定能起到参考作用

# 本代码用于测试推送消息到微信公众号的草稿箱
import json
import time

import requests
data = {
        "articles": [
            {
                "title": "test-title111",
                "author": "Python和数据分析",
                "content": "看更多内容,关注公众号Python和数据分析",  # 这里是上传的文章内容
                "thumb_media_id": "PLptQPQuMDwSGg-b9RCk4WBVpL3tgGJ0u3sayANiiDSObaai3T9rHkgzkFVSElH2"    # 这是上传图片到平台后返回来的id
            }

        ]
    }

# 重点看这儿
data = bytes(json.dumps(data, ensure_ascii=False).encode('utf-8')) 
header_dict = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36',
    'Content-Type': 'application/json; charset=utf-8'   # 重点看这儿
}
resp = requests.post(
    url='https://api.weixin.qq.com/cgi-bin/draft/add?',
    params={
        'access_token': '62_kGF8UX_3M6C_nu5X_xVHXQe7S42YBDcrnsgC96F8j3uovouLYRVCF76uKG_duzxTpaeCfonTOUFwQvJw_ZmGGXy5GmuOLPp3X9Oc3YutDpQ-t7wPuFrHFPQV48qv9eCaYtG2w0Cb9DtRbvp7RDLeAJAYKS'},
    headers=header_dict,
    data=data,    重点看这儿
)

好了,本期就分享到这里,下期(说不定现在已经更新了,可以去看看我的其他文章),我会把获取token到自动抓取数据,解析后通过接口上传到草稿箱的一整套流程和代码梳理出来分享给大家,尽情期待!