1. 场景
经常有小伙伴在交流群问我,每天的早报新闻是怎么获取的?
其实,早期使用的方案,是利用爬虫获取到一些新闻网站的标题,然后做了一些简单的数据清洗,最后利用 itchat 发送到指定的社群中。
由于爬虫面对 网站改版的不稳定性及 itchat 不安全性 ,所以放弃了这种方案
后期更改了一种方案,通过修改爬虫方案,创建 API 服务,编写 App 去获取数据,然后手动发送到微信群
本篇文章将和大家详细聊聊具体的实现过程
2. 数据爬取
第 1 步, 通过 Python 爬虫获取数据
获取方式有 2 种,分别是:已有的新闻早报网站、新闻网站的头条新闻
选择一种爬虫方式,就能很快地爬取到目标网站的数据
第 2 步, 数据清洗,排序
将爬取到的数据先进行一次关键字筛选,然后按照点赞或者阅读数按照热点进行排序
第 3 步, 参数化,去重
去掉数据中重复的新闻,然后将最后展示的数目参数化
需要注意的是, 由于新闻网站会经常改版,建议爬取多个新闻网站,做好异常处理,做一个优先级,如果一个网站爬取数据失败,切换到下一个级别的网站爬取数据
3. 服务化
将数据服务化,即编写 API,目的是为了方便终端调用
如果使用 Python 编写 API,建议使用 FastAPI 或 Flask 框架,因为这两个框架开发 API 方便快捷, 以 FastAPI 为例:
第 1 步, 安装依赖
包含 FastAPI 框架及 hypercorn 依赖,hypercorn 是独立的 ASGI 服务器,方便 FastAPI 项目的部署
第 2 步, 编写 API
使用 FastAPI 很方便, 不到 10 行代码就能编写一个接口服务
只需要实例化 FastAPI 对象,利用装饰器指定请求方法和路径即可,调用上面的爬虫方法即可。
如要想本地调试 API,可以通过 uvicorn 命令运行项目
然后访问下面的地址,查看返回的新闻数据
http://127.0.0.1:8000/last_news
第 3 步, 生成依赖迁移文件
使用 pip freeze 命令将在本地生成依赖迁移文件
第 4 步, 上传代码
将代码上传到代码托管平台,比如:码云、GitLab 等
第 5 步, 服务器拉取代码
服务器中通过 git 拉取代码,并通过依赖文件一键安装所有依赖
第 6 步, 运行服务
使用 hypercorn 运行 FastAPI 项目,使进程一直在后台运行,并保存运行日志信息
需要注意的是, 项目绑定的端口号需要在防火墙和云服务器安全组开启
当然,如果使用 Java 编写 API,推荐使用 Spring Boot,可以快速开发一个 Restful API 服务
4. 编写 App
完成 API 服务之后,接下来就是在终端编写一款 App 去访问 API,拿到数据并展示出来
以编写一款 Android 应用为例
首先,我们在界面上放置一个文本显示框和一个按钮控件
然后, 对按钮控件设置点击事件的监听
接着, 使用 Android 的网络请求框架 OkHttp 框架调用 API 获取数据
最后,将新闻数据显示在文本控件中, 并复制到系统剪切板
如果只有 iOS 设备,使用 Xcode 编写 iOS 应用,建议将 Xcode 升级到 11.0 以上
创建项目的时候,推荐使用 SwiftUI 构建 UI 界面,然后利用 CocoaPods 添加 Alamofire 网络请求依赖库,其他操作步骤和 Android 端类似,这里不展开说明
5. 最后
上面步骤只需要点击 App 中的按钮,早报新闻就复制到系统剪切板了,接着可以转发到多个微信群了
当然,最后一步也可以利用 SoloPi 或者无障碍,将内容利用自动化操作,一键转发出去
此文转载文,著作权归作者所有,如有侵权联系小编删除!
需要源代码或者想了解更多的点击这里下载