1. 前言

大家好,我是安果!

之前写过一篇文章,文中提出了一种方案,可以实现每天自动给微信群群发新闻早报

如何利用 Python 爬虫实现给微信群发新闻早报?(详细)

但是对于很多人来说,首先编写一款 App 需要一定的移动端开发经验,其次还需要另外编写无障碍服务应用,如此显得有一定难度的

本篇文章将介绍另外一种方案,即:利用前面文章介绍的 AutoJS 来实现自动给微信群发送新闻早报

2. 爬虫及服务

为了演示方便,这里以百度热搜为新闻早报数据源,

使用 Requests + BeautifulSoup 按热度,爬取热度最高的 15 条数据

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条数据
return '\n'.join(top_list[:15])

然后,利用 FastAPI 编写获取新闻早报的 API,部署到云服务器上(这里以 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)

最后,运行下面命令使服务在后台运行

# 命令行后台运行
# 日志目录:/news_api.log
nohup python3 /xag/news_api.py > /news_api.log 2>&1 &

3. 自动化发送群聊

在 VS Code 中编写 AutoJS 脚本

首先,定义一个给群聊发送消息的方法

PS:使用 click() 坐标执行点击操作仅适用于 Android 7.0+

//API调用获取新闻数据
var url = "http://host:6789/news"; //发送群聊名称
var group_name = "群聊名称"; //发送信息给微信群
function send_wx_msg(group_name, send_msg) {
//如果休眠,唤醒设备
//注意:为了保证耗电低,设置睡眠(10s无操作)
device.wakeUpIfNeeded() //打开微信
app.launch("com.tencent.mm");
text("微信").waitFor() //点击进入到聊天界面
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)
//发送消息
text("发送").click()
log("发送成功!")
//返回到手机桌面
back();
home();

然后,在主线程中启动一个新的线程,调用 API 接口,获取数据后将数据发送出去

//线程
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 将源码导入到手机设备上

最后,选中源文件 - 右键 - 更多 - 定时任务,设置定时任务即可

4. 最后

如此,即可以实现每天早上给指定群发送新闻早报的功能

当然,如果涉及多个群聊的发送,只需要使用 AutoJS 查询多个目标群聊对象 + 页面滑动,遍历进行发送信息即可

另外,由于无障碍服务的不稳定性,可以在设置中 AutoJS 应用服务的优先级,保证程序的稳定运行

如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!

推荐阅读

移动端自动化 AutoJS 快速入门指南(上)

5 分钟,使用内网穿透快速实现远程桌面

聊聊 Jmeter 如何并发执行 Python 脚本

聊聊 PC 端自动化最佳方案 - Pywinauto

聊聊 PC 端自动化最佳方案 - WinAppDriver

App 端自动化的最佳方案,完全解放双手!的更多相关文章

  1. 聊聊 PC 端自动化最佳方案 - Pywinauto

    1. 前言 大家好,我是安果! 上一篇文章,聊到 PC 端的一种自动化方案:WinAppDriver 聊聊 PC 端自动化最佳方案 - WinAppDriver 有小伙伴后台给我留言,说「 pywin ...

  2. 聊聊 PC 端自动化最佳方案 - WinAppDriver

    1. 前言 大家好,我是安果! 一提到自动化,可能大家想到的是 App 端的 Appium.Airtest.AutoJS,亦或是 Selenium.Puppeteer.Cypress 等 Web 端的 ...

  3. 移动 APP 端与服务器端用户身份认证的安全方案

    最近要做一个项目是java开发后端服务,然后移动APP调用.由于之前没有接触过这块,所以在网上搜索相关的方案.然后搜到下面的一些方案做一些参考. 原文:移动 APP 端与服务器端用户身份认证的安全方案 ...

  4. 移动APP漏洞自动化检测平台建设

    移动APP漏洞自动化检测平台建设   前言:本文是<移动APP客户端安全笔记>系列原创文章中的第一篇,主要讲的是企业移动APP自动化漏洞检测平台建设,移动APP漏洞检测发展史与前沿技术,A ...

  5. Android 屏幕旋转 处理 AsyncTask 和 ProgressDialog 的最佳方案

    的最佳方案 标签: Android屏幕旋转AsyncTaskProgressDialog 2014-07-19 09:25 39227人阅读 评论(46) 收藏 举报 分类: [android 进阶之 ...

  6. 利用缓存实现APP端与服务器接口交互的Session控制

    与传统B/S模式的Web系统不同,移动端APP与服务器之间的接口交互一般是C/S模式,这种情况下如果涉及到用户登录的话,就不能像Web系统那样依赖于Web容器来管理Session了,因为APP每发一次 ...

  7. nginx配置pathinfo支持,最佳方案 - chunyu

    〇. 前言 pathinfo有两个,1 pathinfo()函数,2 $_SERVER['PATH_INFO'].pathinfo()是php的库函数,原生支持不需要nginx配置,$_SERVER[ ...

  8. 移动端自动化自动化(Android&iOS)——Appium

    Appium-Python 移动端自动化环境搭建 Appium介绍 Appium是一个开源.跨平台的测试框架,可以用来测试原生及混合的移动端应用.Appium支持iOS.Android及Firefox ...

  9. JavaScript 实现命名空间(namespace)的最佳方案——兼容主流的定义类(class)的方法,兼容所有浏览器,支持用JSDuck生成文档

    作者: zyl910 一.缘由 在很多的面向对象编程语言中,我们可以使用命名空间(namespace)来组织代码,避免全局变量污染.命名冲突.遗憾的是,JavaScript中并不提供对命名空间的原生支 ...

随机推荐

  1. 洛谷4234最小差值生成树 (LCT维护生成树)

    这也是一道LCT维护生成树的题. 那么我们还是按照套路,先对边进行排序,然后顺次加入. 不过和别的题有所不同的是: 在本题中,我们需要保证LCT中正好有\(n-1\)条边的时候,才能更新\(ans\) ...

  2. 随机生成文章的AI(C++)

    #include <iostream> #include <cstdlib> #include <ctime> #include <fstream> u ...

  3. Java(4)运算符及表达式

    作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15201675.html 博客主页:https://www.cnblogs.com/testero ...

  4. python 类中的公有属性 私有属性 实例属性

    class parent(): i=1 __j=2 class child(parent): m=3 __n=4 def __init__(self,age,name): self.age=age s ...

  5. ByteCTF2021 double sqli

    double sqli easy sqli http://39.105.175.150:30001/?id=1 http://39.105.116.246:30001/?id=1 http://39. ...

  6. [no code][scrum meeting] Beta 10

    $( "#cnblogs_post_body" ).catalog() 例会时间:5月25日15:00,主持者:伦泽标 下次例会时间:5月26日11:30,主持者: 一.工作汇报 ...

  7. [no code][scrum meeting] Alpha 10

    项目 内容 会议时间 2020-04-16 会议主题 用户管理第一版交付 会议时长 15min 参会人员 PM+后端组成员 $( "#cnblogs_post_body" ).ca ...

  8. 2020年OO助教工作总结

    随着这学期课程的落幕,我一学期的OO助教工作也宣告结束.这学期我的工作主要在系统组,和OO后台的数据库打交道. 作业查重 我几乎每周都会做的例行工作,是对每周的homework进行查重管理.由于使用了 ...

  9. Spring 5 中函数式web开发中的swagger文档

    Spring 5 中一个非常重要的更新就是增加了响应式web开发WebFlux,并且推荐使用函数式风格(RouterFunction和 HandlerFunction)来开发WebFlux.对于之前主 ...

  10. Noip模拟5 2021.6.7

    T1 string(线段树优化) 看到数据范围就必须要想到优化,那么如何把26×M∗N 的复杂度降低呢?? 用到那个我们最不想打的数据结构--线段树...... 然而,这个线段树与往常不同,他只需要用 ...