共计 2158 个字符,预计需要花费 6 分钟才能阅读完成。
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 应用服务的优先级,保障程序的稳固运行
如果你感觉文章还不错,请大家 点赞、分享、留言 下,因为这将是我继续输入更多优质文章的最强能源!
正文完