image-20201125201255016

上一篇讲了如何搭建并开箱即用RSSHub,这一篇讲一下如何通过RSSHub来为不兼容rss的页面配置上rss。

首先聊一下原理吧,博主已经成功的为一个原本不适配rss的页面加上了rss,之前也用过一个更为复杂的同类型(但或许更强大)的工具:Huginn,一般来说来爬去页面上的内容一般通过css的类来定位文本位置,并输出到rss中。所以精髓即是打开你浏览器的开发者模式(检察元素)定位所需要的class,并且需要一点点的编程基础即可~

准备工作

1. Fork项目

这个不多说,到RSSHub的仓库,点一下右上角的fork按钮,即可把这个项目fork到自己的GitHub账号下

image-20201125201443974

2. Clone到本地

如果你和我一样,习惯使用终端的话

cd $你的工程目录
git clone $你fork下来的地址

如果你不怎么用终端,那么图形化界面点点即可,没啥好说的这一步。

3. 部署并启动本地环境

  1. 首先需要安装依赖包,本开源项目基于vue,可以使用npm/yarn来进行安装依赖,博主非常推荐yarn作为js的包管理器,速度真的非常快而且更加现代化,npm讲真的有点慢了。。
# npm安装依赖
npm install
# 或者yarn安装依赖
yarn

⚠️注意:

执行上述命令的前提时你已经在计算机上安装了npm或yarn,具体安装过程不赘述。

  • 有些依赖只兼容python 2.x 。如果没有Python 2.x ,在安装过程中会抛出Error,但实测不影响使用
  1. 启动RSSHub开发环境
# npm
npm run dev
# 或者
yarn dev
  1. 在浏览器上打开链接: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分支中。
  • 此处为了简化操作、节省时间,可采用如下方法:
    1. 在自己的github账号上打开已经commit后的RSS Hub仓库
    2. 返回仓库主页,点击文件列表上方的pull request按钮。
    3. 指定base repository(目标仓库)和head repository(源仓库),即请求将源仓库合并到目标仓库中,一般保持默认即可。
    4. 点击create pull request即可创建pr请求。
    5. 之后等待仓库原有者审核代码,如有问题,则修改后重复上述步骤。
    6. 没有问题的话,仓库原有者就会将你的分支合并到主分支中
    7. 之后就可以通过rsshub的服务器访问自己创建的rss了。