UPDATE: rss-engine 经过后续迭代已重新发布,原来的 zju-me-rss 仓库更名为 rss-engine,托管最新的代码,zju-me 和 zju-grs 均作为示例脚本存放在其中,请直接前往 rss-engine 仓库查看使用。
本项目用于定时生成并发布浙江大学研究生院的新闻公告 RSS 源。生成的 RSS 源发布在 GitHub Pages 的子页面,可以通过一般的 RSS 阅读器订阅。
与另一个项目 zju-me-rss 相同,本项目的建立基于自制的 rss_engine 基础框架。在此框架下,可以通过简单的编辑实现自定义 RSS 源的快速搭建。
rss_engine.py: RSS 框架主体部分,通过调用该程序来生成 .xml 文件get_url_list.py: 实现了自定义网页抓取区域的函数,更改抓取内容主要修改这一文件url2article.py: 解析网页内容,返回相关信息,主要调用了URL2io提供的网页解析 API 服务data_storage.pkl: 存储 RSS 生成的历史数据logfile.txt: 日志文件xxx.xml: 生成的 .xml 文件示例update_rss_feed.sh: 生成并发布 RSS Feed 的服务器端脚本(以树莓派 OpenWRT 系统为例)
- Python(3) 及以下第三方库:
- requests
- beautifulsoup4
- PyRSS2Gen
- 注册并替换
url2article.py的用户 token - 在自己的服务器克隆本仓库以及自己的 GitHub Pages 对应仓库
- 配置
update_rss_feed.sh脚本,将其中的各项路径修改为实际的存放路径 - 为
update_rss_feed.sh添加执行权限(chmod +x update_rss_feed.sh) - 使用 Linux crontab 命令,设置脚本定时运行:
crontab -e # 进入编辑
* */23 * * * /root/update_rss_feed.sh # 每隔23小时运行一次(保险起见不使用边界值24,未作深究)
# 退出编辑
crontab -l # 查看定时任务列表
service cron restart主要通过修改 get_url_list.py 中的 get_url_list*() 函数来自定义需要抓取的页面区域。根据函数修改的具体情况,在 rss_engine.py 调用该函数的对应部分也需要进行基本的配置。