代码拿走即用!Python推送内容到公众号实现自动化
Python推送內容到公眾號自動化,代碼拿走即用!
? 序言
作為一名普通的公眾號運營者,撰寫文章、排版、發(fā)表等過程都是比較耗時間的。
其實很多人不知道的是,微信公眾號平臺為創(chuàng)作者開通了很多的接口,這些接口如果加以利用,可大大減少創(chuàng)作者上傳素材、發(fā)表等時間。
甚至如果打通“某些接口”的話,直接可實現(xiàn)一鍵轉載別人的文章、自動添加素材等騷操作。
這個時候對于轉載文章,你可能就只需要檢查、更改下排版等,就可以直接發(fā)表。今天,我們就實現(xiàn)一個添加素材到公眾后后臺的自動化案例。
如果你是python愛好者,這個案例可用來練手;如果你是公司或個人新媒體運營人員,這樣做能減少你很多工作;再一個,如果是互聯(lián)網從業(yè)者,復制粘貼(c/v)才是真諦,哈哈都懂吧。
源碼已整理到好,需要可在我的公號“Python和數(shù)據(jù)分析”后臺回復【微信】或添加作者獲取。
? 自動化添加素材到公眾號
1.介紹及效果
功能介紹:使用Python獲取天行數(shù)據(jù)(一個網站)特定接口的素材,自動化將文案素材上傳到自己的公眾號中。
效果如下:
實現(xiàn)思路:
準備所要上傳到草稿箱的文本(我是在天行數(shù)據(jù)上拉去的段子素材)–> 獲取access_token(其作用參考微信開放文檔 (qq.com)) -->先用測試工具上傳一張圖片到公號素材庫(必須一張圖用于文章封面)–> 調用公眾號上傳草稿的接口用post請求方式上傳草稿
2.代碼實現(xiàn)
2.1天行數(shù)據(jù)拉取段子素材
這里可以換成你想拉去的其他接口數(shù)據(jù),或者你自己寫的文字用于測試都行。
import requests# 此模塊用于在天行數(shù)據(jù)上拉取在段子# 創(chuàng)建一個爬蟲類 # 首先,實例為蜘蛛,,屬性有名字,每一只蜘蛛會建立連接,解析數(shù)據(jù),保存數(shù)據(jù) class Spider(object):def __init__(self, name, url):self.name = nameself.url = urlself.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數(shù)據(jù)def request(self):resp = requests.get(url=self.url,headers=self.headers,params={'key': '注冊天行數(shù)據(jù),獲取一個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# 保存數(shù)據(jù)def savetext(self, content, filename):f = open('data/' + filename, 'w')f.write(content + '\n')f.close()return 1def main():url = 'http://api.tianapi.com/joke/index'spider = Spider('笑話', url)# 每天抓十條數(shù)據(jù)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' + contentcontents += '\n'contents += mergeexcept Exception as e:print(e)# 保存到文件,成功返回1print(spider.savetext(contents, 'joke.txt'))if __name__ == '__main__':main()2.2獲取access_token
不知道access_token,請自行百度或參考微信開放文檔 (qq.com),有不明白可關注公眾號“Python和數(shù)據(jù)分析”,后臺就可找到我哦!
import json from urllib import parse, request import time## 此函數(shù)用于獲取access_token,不知道有啥作用,參考微信公眾號開發(fā)文檔: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 Falseif __name__ == '__main__':# 注意,獲取不到access_token,很可能你沒有在公眾號上添加 你的ip地址 為白名單get_wxCode_token()2.3調用公眾號接口上傳素材
先用測試工具(這個工具是啥應該不需要我介紹了吧,好吧,需要的后臺回復【測試工具】,獲取安裝包)使用post請求方式上傳一張圖片到公眾號,得到media_id。
具體操作方式參考:微信開放文檔 (qq.com)
2.4使用主函數(shù)調用所有函數(shù)
import requests import datetime import time import json import chardetfrom 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.從天行數(shù)據(jù)拉去想要的文本數(shù)據(jù)并解析整理 # 3.調用上傳草稿的接口使用post方式上傳文本數(shù)據(jù)# 步驟: # 1.拿到token,用一個變量來記錄獲取token時的時間戳,每次執(zhí)行時先檢查時間達到2個小時的才去獲取token token = '' getTokenTime = 0class Caogao(object):def __init__(self,name,data,access_token,getTokenTime):self.name = nameself.data = dataself.access_token = access_tokenself.getTokenTime = getTokenTime# 先判斷是否有token,如果沒有,獲取token,同時記錄時間,獲取后開始干活兒,# 如果有,判斷是否失效,失效則重新獲取,# 判斷token是否過期def which_token_abate(self):# 獲取token時間戳# global getTokenTime# 獲取當前時間戳nowtime_stamp = time.time()# 用當前時間戳減去getTokenTime,大于兩個小時就判定失效hour2 = 2 * 60 * 60 * 1000if nowtime_stamp - self.getTokenTime > hour2:return Truereturn False# 判斷是否有tokendef have_token(self):if self.access_token != '':return Truereturn False# 發(fā)送數(shù)據(jù),data為要發(fā)的內容def send_requests(self):# 2.導入requests包,發(fā)送posttry: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.抓取笑話數(shù)據(jù)url = 'http://api.tianapi.com/joke/index'spider = Spider('笑話', url)# 每天抓十條數(shù)據(jù)contents = ''# 建立請求datajson = spider.request()# 解析數(shù)據(jù)for i in range(11):try:# 標題title = datajson['newslist'][i]['title']print(title)# 內容content = datajson['newslist'][i]['content']# 合并merge = ''merge = title + '\n' + contentcontents += '\n'contents += mergeexcept Exception as e:print(e)# 保存到文件,成功返回1# print(spider.savetext(contents, 'joke.txt'))# 2.推送到公眾號# 要傳的草稿data = {"articles": [{"title": "關注【Python和數(shù)據(jù)分析】公眾號","author": "翔宇","content": contents,"thumb_media_id": "這里需要用接口工具上傳一張圖片到公眾號素材里,返回的mediaid放到這里,不懂請關注公眾號“Python和數(shù)據(jù)分析“問作者"}]}token_and_time = get_wxCode_token()access_token = token_and_time[0]getTokenTime = token_and_time[1]# 創(chuàng)建草稿實例caogao = Caogao('caogao',data,access_token,getTokenTime)caogao.send_requests()if __name__ == '__main__':for _ in range(10):main()3.總結
總的來說,這個自動化工具還是很不錯的,至少省掉了我很多復制粘貼的工作。
直接從天行數(shù)據(jù)拉去段子后,我稍微排版一下就可以發(fā)表文章了。下面這種文章的素材就是自動推送到公眾號的。大家可以點進去幫我看看效果或提意見。
另外,對于這個程序,如果你知道post、get請求方式,會使用Python拉取數(shù)據(jù)和post推送數(shù)據(jù),實現(xiàn)這樣一個自動工具還是很簡單的,為了不讓大家重復造輪子,使用我的代碼進行改動一下就可以了。
好了,今天就分享到這里,關注下方公眾號后臺回復【微信】即可獲取源代碼哦!或者有問題可以后臺聯(lián)系作者哦。
總結
以上是生活随笔為你收集整理的代码拿走即用!Python推送内容到公众号实现自动化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电子合同解决企业全程电子化的最后一公里难
- 下一篇: 毁电脑的cmd命令