App 端自動(dòng)化的最佳方案,完全解放雙手!
??????關(guān)注我,和老表一起學(xué)Python、云服務(wù)器

1. 前言
之前寫過(guò)一篇文章,文中提出了一種方案,可以實(shí)現(xiàn)每天自動(dòng)給微信群群發(fā)新聞早報(bào)
如何利用 Python 爬蟲實(shí)現(xiàn)給微信群發(fā)新聞早報(bào)?(詳細(xì))
但是對(duì)于很多人來(lái)說(shuō),首先編寫一款 App 需要一定的移動(dòng)端開發(fā)經(jīng)驗(yàn),其次還需要另外編寫無(wú)障礙服務(wù)應(yīng)用,如此顯得有一定難度的
本篇文章將介紹另外一種方案,即:利用前面文章介紹的 AutoJS 來(lái)實(shí)現(xiàn)自動(dòng)給微信群發(fā)送新聞早報(bào)
2. 爬蟲及服務(wù)
為了演示方便,這里以百度熱搜為新聞早報(bào)數(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?編寫獲取新聞早報(bào)的 API,部署到云服務(wù)器上(這里以 CentOS 為例)
import?uvicorn
from?fastapi?import?FastAPI
from?every_news?import?*
#?pip3?install?uvicorn
#?pip3?install?fastapi
#?實(shí)例化
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)
最后,運(yùn)行下面命令使服務(wù)在后臺(tái)運(yùn)行
#?命令行后臺(tái)運(yùn)行
#?日志目錄:/news_api.log
nohup?python3?/xag/news_api.py?>??/news_api.log?2>&1?&3. 自動(dòng)化發(fā)送群聊
在 VS Code 中編寫 AutoJS 腳本
首先,定義一個(gè)給群聊發(fā)送消息的方法
PS:使用?click()?坐標(biāo)執(zhí)行點(diǎn)擊操作僅適用于 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無(wú)操作)
????device.wakeUpIfNeeded()
????//打開微信
????app.launch("com.tencent.mm");
????text("微信").waitFor()
????//點(diǎn)擊進(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();
然后,在主線程中啟動(dòng)一個(gè)新的線程,調(diào)用 API 接口,獲取數(shù)據(jù)后將數(shù)據(jù)發(fā)送出去
//線程
threads.start(function?()?{
????//獲取新聞
????http.get(url,?{},?function?(res,?err)?{
????????//錯(cuò)誤
????????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è)備上
最后,選中源文件 - 右鍵 - 更多?-?定時(shí)任務(wù),設(shè)置定時(shí)任務(wù)即可

4. 最后
如此,即可以實(shí)現(xiàn)每天早上給指定群發(fā)送新聞早報(bào)的功能
當(dāng)然,如果涉及多個(gè)群聊的發(fā)送,只需要使用 AutoJS 查詢多個(gè)目標(biāo)群聊對(duì)象 + 頁(yè)面滑動(dòng),遍歷進(jìn)行發(fā)送信息即可
另外,由于無(wú)障礙服務(wù)的不穩(wěn)定性,可以在設(shè)置中?AutoJS 應(yīng)用服務(wù)的優(yōu)先級(jí),保證程序的穩(wěn)定運(yùn)行
如果你覺得文章還不錯(cuò),請(qǐng)大家?點(diǎn)贊、分享、留言?下,因?yàn)檫@將是我持續(xù)輸出更多優(yōu)質(zhì)文章的最強(qiáng)動(dòng)力!
老表每周二贈(zèng)書
圖書介紹:《Python自動(dòng)化測(cè)試實(shí)戰(zhàn)》本書從自動(dòng)化測(cè)試?yán)碚撊胧?,全面地闡述自動(dòng)化測(cè)試的意義及實(shí)施過(guò)程。全文以Python語(yǔ)言驅(qū)動(dòng),結(jié)合真實(shí)案例分別對(duì)主流自動(dòng)化測(cè)試工具Selenium、RobotFramework、Postman、Python Requests、Appium等進(jìn)行系統(tǒng)講解。通過(guò)學(xué)習(xí)本書,讀者可以快速掌握主流自動(dòng)化測(cè)試技術(shù),并幫助讀者豐富測(cè)試思維,提高Python編碼能力。點(diǎn)擊下方卡片直接購(gòu)買學(xué)習(xí)
贈(zèng)書規(guī)則:給本文點(diǎn)贊+周一隨意留言,留言點(diǎn)贊top1可以直接獲得贈(zèng)書一本,另外我將隨機(jī)抽取一位讀者朋友贈(zèng)書一本,另外大家點(diǎn)擊下方公眾號(hào)簡(jiǎn)說(shuō)編程卡片,回復(fù):周一福利,也可以獲得贈(zèng)書一本。
關(guān)注我,回復(fù):周一福利【??注】同一讀者同一月內(nèi)最多只能獲得一本贈(zèng)書;必須在收到贈(zèng)書后學(xué)習(xí)完圖書內(nèi)容/投稿學(xué)習(xí)筆記一篇后才能獲得下一本贈(zèng)書。
萬(wàn)水千山總是情,點(diǎn)個(gè)????行不行。
--END--
如何找到我:
近期優(yōu)質(zhì)文章:
學(xué)習(xí)更多:整理了我開始分享學(xué)習(xí)筆記到現(xiàn)在超過(guò)250篇優(yōu)質(zhì)文章,涵蓋數(shù)據(jù)分析、爬蟲、機(jī)器學(xué)習(xí)等方面,別再說(shuō)不知道該從哪開始,實(shí)戰(zhàn)哪里找了“點(diǎn)贊”就是對(duì)博主最大的支持?
