上一篇讲了如何搭建并开箱即用RSSHub,这一篇讲一下如何通过RSSHub来为不兼容rss的页面配置上rss。
首先聊一下原理吧,博主已经成功的为一个原本不适配rss的页面加上了rss,之前也用过一个更为复杂的同类型(但或许更强大)的工具:Huginn,一般来说来爬去页面上的内容一般通过css的类来定位文本位置,并输出到rss中。所以精髓即是打开你浏览器的开发者模式(检察元素)定位所需要的class,并且需要一点点的编程基础即可~
准备工作
1. Fork项目
这个不多说,到RSSHub的仓库,点一下右上角的fork按钮,即可把这个项目fork到自己的GitHub账号下
2. Clone到本地
如果你和我一样,习惯使用终端的话
cd $你的工程目录
git clone $你fork下来的地址
如果你不怎么用终端,那么图形化界面点点即可,没啥好说的这一步。
3. 部署并启动本地环境
- 首先需要安装依赖包,本开源项目基于vue,可以使用npm/yarn来进行安装依赖,博主非常推荐yarn作为js的包管理器,速度真的非常快而且更加现代化,npm讲真的有点慢了。。
# npm安装依赖
npm install
# 或者yarn安装依赖
yarn
⚠️注意:
执行上述命令的前提时你已经在计算机上安装了npm或yarn,具体安装过程不赘述。
- 有些依赖只兼容python 2.x 。如果没有Python 2.x ,在安装过程中会抛出Error,但实测不影响使用
- 启动RSSHub开发环境
# npm
npm run dev
# 或者
yarn dev
- 在浏览器上打开链接:127.0.0.1:1200,能正常显示页面,即表述部署成功
开发环节
1. 添加脚本路由
修改项目文件夹下 lib
路径下的router.js
文件,向其中添加路由信息
此处可仿照已有路由进行修改,例如:
//其中get函数的第一项是在浏览器上访问的路径,此路径是位于RSS Hub服务器中的相对路径,正式访问时还需再前面加上:(远程)https://rsshub.app 或(本地)localhost:1200。 //:type?-值传递给路径的参数信息,如键入https://rsshub.app/upc/main/notice,服务器端就可以通过脚本文件中的参数解析获取到notice,进而可以进行下一步操作。 //第二项是路由脚本文件的存放路径,当在浏览器中键入https://rsshub.app/upc/main/notice时,它会自动去服务器中的指定路径上寻找脚本文件,此处脚本文件是main.js,指定路径时文件后缀省略。 router.get('/fudancce', require('./routes/universities/fudancce/index'));
2. 编写脚本文件
编写路由脚本文件。根据上面指定的路由脚本文件的路径,创建文件夹和js文件
⚠️注意:
- 在编写js文件时需要用到一些前端知识,比如网页元素的获取和处理,此处推荐菜鸟教程。
- 脚本文件的框架结构在RSS Hub的文档有说明,具体参考RSS Hub-参与我们。
- 在编写自己的脚本文件时可以参考其他大佬的已经写好的脚本文件,打开里面解析的网页,看一下他是怎么获取并解析网页信息的,然后仿造着用到自己想要解析的网页上就可以了。避免重复造轮子,这样能够极大的节省开发时间。
3. 添加脚本的说明文档
修改/doc/
路径下对应的markdown文档,如/doc/university.md
注意:
样例可参考RSS Hub-参与我们。
务必将
<Route>
标签封闭,否则检查不通过。简单内容用
<Route ******/>
,复杂内容(带参数表)用<Route *****>参数表</Route>
。添加完毕后,进行代码格式标准化,对其提示的警告和错误信息进行修改。
npm run format
4. 测试
上述操作完成后可在本地测试指定网站的RSS是否生成成功。
如访问链接:localhost:1200/fudancce
,如果返回xml文件内容则表示生成成功。
如提示路由为空,则需检查上面的操作是否有问题。
5. pull request
- Pull Request,简称pr,指请求仓库原有者拉取本人仓库分支,合并到
master
分支中。- 此处为了简化操作、节省时间,可采用如下方法:
- 在自己的github账号上打开已经commit后的RSS Hub仓库
- 返回仓库主页,点击文件列表上方的
pull request
按钮。- 指定
base repository
(目标仓库)和head repository
(源仓库),即请求将源仓库合并到目标仓库中,一般保持默认即可。- 点击
create pull request
即可创建pr
请求。- 之后等待仓库原有者审核代码,如有问题,则修改后重复上述步骤。
- 没有问题的话,仓库原有者就会将你的分支合并到主分支中
- 之后就可以通过rsshub的服务器访问自己创建的rss了。