Featured image of post 如何制作一个 RSS 源

如何制作一个 RSS 源

如果你对 RSS 有一定的了解,可以查看右边的索引,跳转到自己需要的地方唷><

什么是 RSS 呢

梦开始的地方

简单来说,RSS 就像是一个新闻订阅服务,用户可以通过订阅自己喜欢的网站的 RSS 源,获取这些网站的最新内容和更新,而无需每次都去访问这些网站。用户可以将订阅的 RSS 源集中在一个地方,方便浏览和阅 读。 ——ChatGPT

如何使用 RSS 源

RSSHub  提供了一些公共 RSS 源,搜索自己喜欢的网站进行查找

这里以月幕 Gal RSS 源为例:

RSSHub RSS Hub

最后的最后,复制链接到 RSS 阅读器,点击添加订阅就可以啦 w

Twitter 的 RSS 源可以看这篇:Nitter Rss 403 的解决方案

手机端 RSS 阅读器可以使用开源的  Feeder

电脑端 RSS 阅读器可以使用开源的  Fluent Reader

想要全平台同步可以使用公共 Telegram 机器人 订阅 RSS 源,由于是公共的可能会有延迟,下面将会介绍如何部署一个自己的 Telegram 机器人 wwww

如何制作自己的 RSS 源

呜呜呜呜呜呜!找不到自己喜欢的 RSS 源怎么办,那当然是去RSSHub上提 issues 呀

那人家也不理我怎么办 qwq

那就自己来做一个!利用huginn制作 RSS 源

下载安装篇

在 linux 中安装 docker

1
curl -fsSL get.docker.com -o get-docker.shsudo sh get-docker.sh --mirror Aliyun

启动 docker 容器(等待一分钟左右)

1
docker run --restart always -d -p 3000:3000 ghcr.io/huginn/huginn

开放指定端口

1
sudo ufw allow 3000

在浏览器中打开 Huginn

http://localhost:3000

localhost 替换为你自己的 ip,然后打开(如图)

Huginn

点击 login,用户名与密码分别默认为 admin 与 password

设置账户

为保证账户安全,点击 account 菜单,选择 account 修改账户密码

为 Huginn 使用做准备

准备  Api key

需要注册一个phantomjscloud账户,用来渲染动态网页成静态页面,注册好后从中获取 ApiKey

Phantomjscloud

在 Huginn 中新建凭证(Credentials)

在 Huginn 中使用 ApiKey

Huginn Huginn

如何使用 Huginn

概述

一共分为 4 步:

  1. 利用 PhantomJs agent 将动态网页转成静态网页
  2. 利用 Website agent 解析提取文章标题
  3. 利用 Website agent 解析提取文章内容
  4. 利用 DataOutputAgent 将解析的东西转成 RSS 源

将动态网页转成静态网页

这里以制作Keyfc 论坛 RSS 源为例

点击新建代理(Agent)(没有说明的内容默认就行,不需要填写)

Huginn

User agent:

1
Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36

提取文章标题与时间

点击新建代理(Agent)(Website Agent 类型)


获取 xpath 路径可以用 f12 弹出控制台,然后点击选择元素,之后在页面中选择标题

点击文章标题可以看见这个样子

我们可以在控制台看见文章标题,右键选中,点击 copy full xpath

可以看见完整的 xpath 路径是这个样子的

1
/html/body/div[4]/div[3]/div/div[3]/table/tbody[1]/tr/th/a[1]

由于不同文章的 xpath 路径有可能不同,所以我们需要对这个路径做一些修改(不然抓取的文章只有这一个)

我们主要通过对比不同文章之间的 xpath 路径进行修改

以相同方式,复制第二篇文章完整 xpath 路径,如下

1
/html/body/div[4]/div[3]/div/div[3]/table/tbody[2]/tr/th/a[1]

方法:找不同,来删除  (快背,快背,考试要考的><)

通过对比,可以看见最后的部分不同,删除不同之处,可以得到下面的 xpath

1
/html/body/div[4]/div[3]/div/div[3]/table/tbody/tr/th/a[1]

那有的时候通过对比,没有不同之处怎么办呢?

笨…笨蛋!不修改不就行了嘛

以相同的方式获取发布时间

分别获取的第一篇与第二篇文章的发布时间

1
2
/html/body/div[4]/div[3]/div/div[3]/table/tbody[1]/tr/td[3]/em
/html/body/div[4]/div[3]/div/div[3]/table/tbody[2]/tr/td[3]/em

删除两者不同的地方,得到一下内容

1
/html/body/div[4]/div[3]/div/div[3]/table/tbody/tr/td[3]/em

点击两次 Dry Run 运行下看看

抓取成功啦,但是 url 有些问题,可以使用模板(template)使它们拼接起来


1
"template": {    "url1": "{{ url | to_uri: _response_.url }}"  }

点击两次 Dry Run 运行下看看

完成!

提取文章内容

点击新建代理(Agent)(Website Agent 类型)

点击标题链接查看文章内容,并以相同方式获取 xpath 路径

分别获取的第一篇与第二篇文章的内容 xpath 路径

1
2
/html/body/div[4]/div[5]/div/form[1]/div/table[1]/tbody[1]/tr/td[2]/div[4]/div[2]/div
/html/body/div[4]/div[5]/div/form[1]/div/table[1]/tbody[1]/tr/td[2]/div[4]/div[2]/div

通过对比没有不同之处,不需要修改


完成!

转成 RSS 源



点击 actions 菜单,选择 show

这个后缀为.xml 的链接就是你做的 RSS 源啦(啪唧啪唧,鼓掌 www)

常见问题

如果遇到下面的 working 状态为 no

不用担心,这是正常现象,页面更新的时候会自动变成 yes

部署 Telegram RSS Reader Bot

项目地址:Bot

部署

下载安装篇

1
2
3
mkdir rsstt
cd rsstt
wget https://raw.githubusercontent.com/Rongronggg9/RSS-to-Telegram-Bot/dev/docker-compose.yml.sample -O docker-compose.yml

准备与配置

转向  @BotFather ,发送  /newbot  创建一个新的机器人,获取  token

转向  @userinfobot  获取您的用户 ID(环境变量:)MANAGER

获取 Telegraph API 访问令牌(环境变量:)TELEGRAPH_TOKEN。每次获得新令牌时刷新页面。如果您有很多订阅,请确保获得至少 5 个代币。

编辑 docker-compose.yml 文件,替换  token , MANAGER , TELEGRAPH_TOKEN

1
vim docker-compose.yml

更新

1
docker-compose up -d

完结撒花!!

Built with Hugo
主题 StackJimmy 设计