赞
踩
序言
作为一名普通的公众号运营者,撰写文章、排版、发表等过程都是比较耗时间的。
其实很多人不知道的是,微信公众号平台为创作者开通了很多的接口,这些接口如果加以利用,可大大减少创作者上传素材、发表等时间。
甚至如果打通“某些接口”的话,直接可实现一键转载别人的文章、自动添加素材等骚操作。
这个时候对于转载文章,你可能就只需要检查、更改下排版等,就可以直接发表。今天,我们就实现一个添加素材到公众后后台的自动化案例。
如果你是python爱好者,这个案例可用来练手;如果你是公司或个人新媒体运营人员,这样做能减少你很多工作;再一个,如果是互联网从业者,复制粘贴(c/v)才是真谛,哈哈都懂吧。
源码已整理到好,需要可在我的公号“Python和数据分析”后台回复【微信】或添加作者获取。
自动化添加素材到公众号
1.介绍及效果
功能介绍:使用Python获取天行数据(一个网站)特定接口的素材,自动化将文案素材上传到自己的公众号中。
效果如下:
实现思路:
准备所要上传到草稿箱的文本(我是在天行数据上拉去的段子素材)–> 获取access_token(其作用参考微信开放文档 (qq.com)) -->先用测试工具上传一张图片到公号素材库(必须一张图用于文章封面)–> 调用公众号上传草稿的接口用post请求方式上传草稿
2.代码实现
2.1天行数据拉取段子素材
这里可以换成你想拉去的其他接口数据,或者你自己写的文字用于测试都行。
import requests # 此模块用于在天行数据上拉取在段子 # 创建一个爬虫类 # 首先,实例为蜘蛛,,属性有名字,每一只蜘蛛会建立连接,解析数据,保存数据 class Spider(object): def __init__(self, name, url): self.name = name self.url = url self.headers = { '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' } # 配置请求,返回json数据 def request(self): resp = requests.get( url=self.url, headers=self.headers, params={ 'key': '注册天行数据,获取一个key到这里' } ) resp.encoding = 'utf-8' # 拿到标题 # content_json = resp.json()['newslist'][0]['title'] # 拿到内容 # content_json = resp.json()['newslist'][0]['content'] content_json = resp.json() return content_json # 保存数据 def savetext(self, content, filename): f = open('data/' + filename, 'w') f.write(content + '\n') f.close() return 1 def main(): url = 'http://api.tianapi.com/joke/index' spider = Spider('笑话', url) # 每天抓十条数据 contents = '' # 输出文案 datajson = spider.request() for i in range(10): try: # 标题 title = datajson['newslist'][i]['title'] print(title) # 内容 content = datajson['newslist'][i]['content'] # 合并 merge = '' merge = title + '\n' + content contents += '\n' contents += merge except Exception as e: print(e) # 保存到文件,成功返回1 print(spider.savetext(contents, 'joke.txt')) if __name__ == '__main__': main()
2.2获取access_token
不知道access_token,请自行百度或参考微信开放文档 (qq.com),有不明白可关注公众号“Python和数据分析”,后台就可找到我哦!
import json from urllib import parse, request import time ## 此函数用于获取access_token,不知道有啥作用,参考微信公众号开发文档:https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html # // 获取token def get_wxCode_token(): try: appid = "你自己的appid" secret = "你自己的secret" textmod = {"grant_type": "client_credential", "appid": appid, "secret": secret } textmod = parse.urlencode(textmod) 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'} url = 'https://api.weixin.qq.com/cgi-bin/token' req = request.Request(url='%s%s%s' % (url, '?', textmod), headers=header_dict) res = request.urlopen(req) res = res.read().decode(encoding='utf-8') res = json.loads(res) access_token = res["access_token"] print('access_token:',(access_token,time.time())) return (access_token,time.time()) except Exception as e: print(e) return False if __name__ == '__main__': # 注意,获取不到access_token,很可能你没有在公众号上添加 你的ip地址 为白名单 get_wxCode_token()
2.3调用公众号接口上传素材
先用测试工具(这个工具是啥应该不需要我介绍了吧,好吧,需要的后台回复【测试工具】,获取安装包)使用post请求方式上传一张图片到公众号,得到media_id。
具体操作方式参考:微信开放文档 (qq.com)
2.4使用主函数调用所有函数
import requests import datetime import time import json import chardet from getToken import get_wxCode_token from joke import Spider # 此模块作用:将文本内容上传到公众号草稿箱,可参考https://developers.weixin.qq.com/doc/offiaccount/Draft_Box/Add_draft.html # 全流程: # 步骤:1.获取access_token # 2.从天行数据拉去想要的文本数据并解析整理 # 3.调用上传草稿的接口使用post方式上传文本数据 # 步骤: # 1.拿到token,用一个变量来记录获取token时的时间戳,每次执行时先检查时间达到2个小时的才去获取token token = '' getTokenTime = 0 class Caogao(object): def __init__(self,name,data,access_token,getTokenTime): self.name = name self.data = data self.access_token = access_token self.getTokenTime = getTokenTime # 先判断是否有token,如果没有,获取token,同时记录时间,获取后开始干活儿, # 如果有,判断是否失效,失效则重新获取, # 判断token是否过期 def which_token_abate(self): # 获取token时间戳 # global getTokenTime # 获取当前时间戳 nowtime_stamp = time.time() # 用当前时间戳减去getTokenTime,大于两个小时就判定失效 hour2 = 2 * 60 * 60 * 1000 if nowtime_stamp - self.getTokenTime > hour2: return True return False # 判断是否有token def have_token(self): if self.access_token != '': return True return False # 发送数据,data为要发的内容 def send_requests(self): # 2.导入requests包,发送post try: 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' } response_psot = requests.post( url='https://api.weixin.qq.com/cgi-bin/draft/add?', params={ 'access_token': self.access_token}, headers=header_dict, data=bytes(json.dumps(self.data, ensure_ascii=False).encode('utf-8')) # data=self.data, ) print(response_psot) except Exception as e: print(e) def main(): # 1.抓取笑话数据 url = 'http://api.tianapi.com/joke/index' spider = Spider('笑话', url) # 每天抓十条数据 contents = '' # 建立请求 datajson = spider.request() # 解析数据 for i in range(11): try: # 标题 title = datajson['newslist'][i]['title'] print(title) # 内容 content = datajson['newslist'][i]['content'] # 合并 merge = '' merge = title + '\n' + content contents += '\n' contents += merge except Exception as e: print(e) # 保存到文件,成功返回1 # print(spider.savetext(contents, 'joke.txt')) # 2.推送到公众号 # 要传的草稿 data = { "articles": [ { "title": "关注【Python和数据分析】公众号", "author": "翔宇", "content": contents, "thumb_media_id": "这里需要用接口工具上传一张图片到公众号素材里,返回的mediaid放到这里,不懂请关注公众号“Python和数据分析“问作者" } ] } token_and_time = get_wxCode_token() access_token = token_and_time[0] getTokenTime = token_and_time[1] # 创建草稿实例 caogao = Caogao('caogao',data,access_token,getTokenTime) caogao.send_requests() if __name__ == '__main__': for _ in range(10): main()
3.总结
总的来说,这个自动化工具还是很不错的,至少省掉了我很多复制粘贴的工作。
直接从天行数据拉去段子后,我稍微排版一下就可以发表文章了。下面这种文章的素材就是自动推送到公众号的。大家可以点进去帮我看看效果或提意见。
另外,对于这个程序,如果你知道post、get请求方式,会使用Python拉取数据和post推送数据,实现这样一个自动工具还是很简单的,为了不让大家重复造轮子,使用我的代码进行改动一下就可以了。
好了,今天就分享到这里,关注下方公众号后台回复【微信】即可获取源代码哦!或者有问题可以后台联系作者哦。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。