Python實現(xiàn)APP自動化發(fā)微信群消息的示例代碼
1. 前言
但是對于很多人來說,首先編寫一款 App 需要一定的移動端開發(fā)經(jīng)驗,其次還需要另外編寫無障礙服務(wù)應(yīng)用,如此顯得有一定難度的
本篇文章將介紹另外一種方案,即:利用前面文章介紹的 AutoJS 來實現(xiàn)自動給微信群發(fā)送新聞早報
2. 爬蟲及服務(wù)
為了演示方便,這里以百度熱搜為新聞早報數(shù)據(jù)源,
使用 Requests + BeautifulSoup 按熱度,爬取熱度最高的 15 條數(shù)據(jù)
import requests from bs4 import BeautifulSoup def baidu_top_tipic(): ? ? """百度熱搜""" ? ? requests_page = requests.get('http://top.baidu.com/buzz?b=1&c=513&fr=topbuzz_b42_c513') ? ? soup = BeautifulSoup(requests_page.text, "lxml") ? ? # 查詢 ? ? soup_text = soup.find_all("div", class_='c-single-text-ellipsis', text=True) ? ? top_list = [] ? ? for index, text in enumerate(soup_text): ? ? ? ? top_list.append((str(index + 1) + "、" + text.string.strip())) ? ? # 取熱度最高的15條數(shù)據(jù) ? ? return '\n'.join(top_list[:15])
然后,利用 FastAPI 編寫獲取新聞早報的 API,部署到云服務(wù)器上(這里以 CentOS 為例)
import uvicorn from fastapi import FastAPI from every_news import * # pip3 install uvicorn # pip3 install fastapi # 實例化 app = FastAPI() # 每日新聞 @app.get("/news") async def rsc_api(): ? ? msg = get_news() ? ? return { ? ? ? ? "code": 200, ? ? ? ? "msg": msg ? ? } if __name__ == '__main__': ? ? uvicorn.run(app='news_api:app', host="0.0.0.0", ? ? ? ? ? ? ? ? port=6789, reload=True, debug=True)
最后,運行下面命令使服務(wù)在后臺運行
# 命令行后臺運行 # 日志目錄:/news_api.log nohup python3 /xag/news_api.py > ?/news_api.log 2>&1 &
3. 自動化發(fā)送群聊
在 VS Code 中編寫 AutoJS 腳本
首先,定義一個給群聊發(fā)送消息的方法
PS:使用 click() 坐標(biāo)執(zhí)行點擊操作僅適用于 Android 7.0+
//API調(diào)用獲取新聞數(shù)據(jù) var url = "http://host:6789/news"; //發(fā)送群聊名稱 var group_name = "群聊名稱"; //發(fā)送信息給微信群 function send_wx_msg(group_name, send_msg) { ? ? //如果休眠,喚醒設(shè)備 ? ? //注意:為了保證耗電低,設(shè)置睡眠(10s無操作) ? ? device.wakeUpIfNeeded() ? ? //打開微信 ? ? app.launch("com.tencent.mm"); ? ? text("微信").waitFor() ? ? //點擊進(jìn)入到聊天界面 ? ? var chat_element_bounds = text(group_name).findOne().bounds(); ? ? //支持Android7.0+ ? ? click(chat_element_bounds.centerX(), chat_element_bounds.centerY()); ? ? sleep(3000) ? ? id("auj").className("EditText").findOne().setText(send_msg) ? ? sleep(3000) ? ? //發(fā)送消息 ? ? text("發(fā)送").click() ? ? log("發(fā)送成功!") ? ? //返回到手機(jī)桌面 ? ? back(); ? ? home();
然后,在主線程中啟動一個新的線程,調(diào)用 API 接口,獲取數(shù)據(jù)后將數(shù)據(jù)發(fā)送出去
//線程 threads.start(function () { ? ? //獲取新聞 ? ? http.get(url, {}, function (res, err) { ? ? ? ? //錯誤 ? ? ? ? if (err) { ? ? ? ? ? ? log("抱歉!今天獲取新聞失敗。。。") ? ? ? ? ? ? return; ? ? ? ? } ? ? ? ? log("今日新聞獲取成功!") ? ? ? ? let html = res.body.string(); ? ? ? ? let msg = JSON.parse(html).msg; ? ? ? ? send_wx_msg(group_name, msg) ? ? }); })
接著,使用 VS Code 將源碼導(dǎo)入到手機(jī)設(shè)備上
最后,選中源文件 - 右鍵 - 更多 - 定時任務(wù),設(shè)置定時任務(wù)即可
?4. 最后
如此,即可以實現(xiàn)每天早上給指定群發(fā)送新聞早報的功能
當(dāng)然,如果涉及多個群聊的發(fā)送,只需要使用 AutoJS 查詢多個目標(biāo)群聊對象 + 頁面滑動,遍歷進(jìn)行發(fā)送信息即可
另外,由于無障礙服務(wù)的不穩(wěn)定性,可以在設(shè)置中 AutoJS 應(yīng)用服務(wù)的優(yōu)先級,保證程序的穩(wěn)定運行
到此這篇關(guān)于Python實現(xiàn)APP自動化發(fā)微信群消息的示例代碼的文章就介紹到這了,更多相關(guān)Python APP自動發(fā)微信群內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
簡單了解python filter、map、reduce的區(qū)別
這篇文章主要介紹了簡單了解python filter、map、reduce的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-01-01使用matplotlib的pyplot模塊繪圖的實現(xiàn)示例
這篇文章主要介紹了使用matplotlib的pyplot模塊繪圖的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07如何利用python實現(xiàn)windows的批處理及文件夾操作
最近工作中需要幾個腳本運行其他程序,幾乎像一個Windows批處理文件,這篇文章主要給大家介紹了關(guān)于如何利用python實現(xiàn)windows的批處理及文件夾操作的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-01-01