亿博网站打不开怎么办

你的位置:亿博网站打不开怎么办 > 新闻动态 > 想要每天定时发布公众号图文?方法在这
想要每天定时发布公众号图文?方法在这
发布日期:2025-05-21 11:49    点击次数:183

最近,我在公众号上注意到有些账号每天发布的内容非常相似,就像是新闻简报一样,如下图所示,这让我好奇,这些内容是不是通过某种自动化方式发布的呢?

图片

图片

带着这些疑问,我满怀好奇地打开了微信公众号的开发文档。令人高兴的是,文档中详细介绍了一些用于图文创建和发布的接口功能。

图片

有了这些接口,实现您想要的功能就会变得轻松许多啦。废话不多说,跟着我教程一起来实现吧。

分析实现原理可以通过使用现有的API接口或自己动手编写爬虫程序来收集你感兴趣的内容哦。然后呢,可以将这些内容转换成HTML格式,让它们看起来更加美观易读。接下来就是根据微信公众号开发文档,编写一些接口,实现自动创建图文和发送图文功能。最后一步就是设置定时任务,让你的精彩图文能够按时自动发布出去!代码实现获取最新热点

为了更高效地完成任务,我选择利用一些现有的API接口。今天我想分享一个我经常使用且非常实用的免费API资源。这个网站提供了多种类型的接口服务,覆盖了生活信息、新闻资讯等多个领域,真的非常全面且方便!

图片

我们采用该网址中的每日早报接口,该接口会返回15条全球新闻速报,每日微语数据。而且该接口是免费,每天有100次的请求,足够我们使用了。

图片

使用方式也很简单,先个人中心->token管理中创建一个token,如下图所示:

图片

有了token,就可以编写函数调用该接口了。关键代码如下:

import requestsurl ="https://v3.alapi.cn/api/zaobao"payload ={"token":"请在token管理生成token","format":"json"}headers ={"Content-Type":"application/json"}response = requests.post(url, json=payload, headers=headers)print(response.json())
创建一个微信公众号工具类

利用Python语言编写一个微信公众号工具类,功能包括获取access_token、上传图片、创建图文和发布图文功能。

操作微信公众号所有功能前提,先要获取access_token,如下是获取access_token的关键代码
defget_access_token(self, force_refresh=False):"""获取微信access_token,带缓存机制"""# 如果token未过期且不需要强制刷新,则返回现有tokenifnot force_refresh and self.access_token and time.time()< self.token_expires:return self.access_token        url ="https://api.weixin.qq.com/cgi-bin/token"    params ={"grant_type":"client_credential","appid": self.appid,"secret": self.appsecret}try:        response = requests.get(url, params=params)        response.raise_for_status()        data = response.json()if"access_token"in data:            self.access_token = data["access_token"]# 提前5分钟过期,防止边界情况            self.token_expires = time.time()+ data["expires_in"]-300return self.access_tokenelse:raise Exception(f"获取access_token失败: {data}")except Exception as e:raise Exception(f"获取access_token异常: {str(e)}")

获取access_token需要在微信公众号后台,添加白名单的。设置如下图

图片

创建公众号图文信息,需要封面图片,如下是把封面图上传到公众号的素材库中,上传成功后会返回两个参数,一个是media_id,另外一个是url。
defupload_image(self, image_path, is_online=False):"""上传永久图片素材,返回media_id和url"""    url ="https://api.weixin.qq.com/cgi-bin/material/add_material"    params ={"access_token": self.get_access_token(),"type":"image"}try:if is_online:# 处理在线图片            response = requests.get(image_path)            response.raise_for_status()            files ={"media":(Path(image_path).name, response.content)}else:# 处理本地图片withopen(image_path,"rb")as f:                files ={"media":(Path(image_path).name, f)}            response = requests.post(url, params=params, files=files)        response.raise_for_status()        data = response.json()if"media_id"in data:return{"media_id": data["media_id"],"url": data.get("url","")}else:raise Exception(f"上传图片失败: {data}")except Exception as e:raise Exception(f"上传图片异常: {str(e)}")
有了封面图片,我们就可以创建图文草稿。以下是创建图文的关键代码:
defcreate_draft(self, articles):"""创建图文草稿"""        url ="https://api.weixin.qq.com/cgi-bin/draft/add"        params ={"access_token": self.get_access_token()}        payload ={"articles": articles}try:            response = requests.post(                url,                params=params,                data=json.dumps(payload, ensure_ascii=False).encode("utf-8"))            response.raise_for_status()            data = response.json()if data.get("errcode",0)==0:return data["media_id"]else:raise Exception(f"创建草稿失败: {data}")except Exception as e:raise Exception(f"创建草稿异常: {str(e)}")
创建好图文草稿,我们就可以编写发布图文草稿的接口了。以下是关键代码
defpublic_article(self, media_id):"""发布草稿为正式文章"""        url ="https://api.weixin.qq.com/cgi-bin/material/publish_draft"        params ={"access_token": self.get_access_token()}        payload ={"media_id": media_id}try:            response = requests.post(                url,                params=params,                data=payload)            response.raise_for_status()            data = response.json()except requests.exceptions.RequestException as e:raise Exception(f"发布草稿异常: {str(e)}")
渲染成HMTL内容

在之前的文章介绍过一款MD2CARD的软件,我们可以利用它这些好看的卡片样式。选择一款自己喜欢的样式,把它导出为html格式,如下图所示:

图片

然后,编写一个把工具类,把获取的内容渲染成好看的样式。关键代码如下:

# 新增模板渲染模块classTemplateRenderer:def__init__(self):# 设置模板目录        self.env = Environment(            loader=FileSystemLoader("templates"),            autoescape=True,            trim_blocks=True,            lstrip_blocks=True)defrender_news(self, data:dict)->str:"""渲染新闻模板"""        template = self.env.get_template("template_2.html")return template.render(**data)
项目演示 本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。