feat: update posts

This commit is contained in:
Colin
2022-05-11 19:32:04 +08:00
parent ef089af2ae
commit 65918969c6
2 changed files with 67 additions and 38 deletions

View File

@@ -26,7 +26,7 @@ Huginn使用多个不同功能的Agent组合搭配来实现一系列功能
右键网页打开开发者工具屏幕会分出一部分空间显示开发者工具窗口点击左上角的按钮再把鼠标移动到页面上可以选择页面的某一个元素比如这里我们要爬取推荐文章列表推荐文章列表的每一项都有同样的样式我们可以使用CSS选择器来指定爬取该项
![image-20220508160659378](https://blog-1301127393.file.myqcloud.com/BlogImgs/202205082207138.png)
![image-20220508160659378](https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/202205082207138.png)
@@ -44,7 +44,7 @@ Huginn使用多个不同功能的Agent组合搭配来实现一系列功能
你也可以在右侧Style面板里点击加号添加一个自定义样式输入CSS选择器浏览器会自动高亮符合条件的网页元素你可以使用这个功能来检验你写的CSS选择器是否正确以及是不是提取的你想要的内容
![image-20220508163359806](https://blog-1301127393.file.myqcloud.com/BlogImgs/202205082207716.png)
![image-20220508163359806](https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/202205082207716.png)
@@ -81,13 +81,13 @@ href属性里面的内容是他的链接title属性里面的内容则是他
>
> 字符串处理函数和标签属性值变量可以一起使用,如`normalize-space(@title)`可以获取该标签的title属性值并删除多余的空白字符
![image-20220508163714342](https://blog-1301127393.file.myqcloud.com/BlogImgs/202205082207717.png)
![image-20220508163714342](https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/202205082207717.png)
接下来点击Dry Run按钮进行测试不出意外我们会得到一个json的输出里面包括我们爬取到的每一项他的url和title。
如果没有成功你可能需要删掉上面没有使用到的hovertext节点因为该项指定的内容在我们刚才的网页中并不存在。
![image-20220508164259295](https://blog-1301127393.file.myqcloud.com/BlogImgs/202205082207718.png)
![image-20220508164259295](https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/202205082207718.png)
@@ -97,27 +97,27 @@ href属性里面的内容是他的链接title属性里面的内容则是他
>
> The Data Output Agent outputs received events as either RSS or JSON. Use it to output a public or private stream of Huginn data.
![image-20220508164941647](https://blog-1301127393.file.myqcloud.com/BlogImgs/202205082207719.png)
![image-20220508164941647](https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/202205082207719.png)
**Propagate immediately**是指即时处理来自Source Agent的Event启用他方便我们调试但会略微增加服务器负载你可以自行决定是否使用。
![image-20220508165345792](https://blog-1301127393.file.myqcloud.com/BlogImgs/202205082207720.png)
![image-20220508165345792](https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/202205082207720.png)
在secret字段中为你的这个RSS标注一个英文的名字修改title字段标注你的RSS的名字。item字段是每条文章会有的属性一般来说主要就title和link分别设置为上文我们提取的值的变量名。这里添加一个guid字段这是一篇文章的唯一标识符避免RSS阅读器读到的文章标题不同但是内容相同常见于某篇文章的标题被修改这会导致RSS阅读器内出现多篇重复文章。
此外建议增加一个link字段值设置为与爬取的网站的主域名一致避免网站内使用相对链接开头的资源无法正常加载。
![image-20220508170038722](https://blog-1301127393.file.myqcloud.com/BlogImgs/202205082207721.png)
![image-20220508170038722](https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/202205082207721.png)
![image-20220508170115192](https://blog-1301127393.file.myqcloud.com/BlogImgs/202205082207722.png)
![image-20220508170115192](https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/202205082207722.png)
点击Save保存回到Scenario界面第一次需要手动点击运行一下刚才的Website Agent。稍等片刻后台会进行爬取右上角会显示产生了多少个Event。再点开刚才设置的Data Output Agent查看详情vola右侧就会显示生成的RSS链接了复制以xml结尾的链接到RSS阅读器中就可以订阅啦🎉
![image-20220508170212112](https://blog-1301127393.file.myqcloud.com/BlogImgs/202205082207723.png)
![image-20220508170212112](https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/202205082207723.png)
@@ -147,7 +147,7 @@ href属性里面的内容是他的链接title属性里面的内容则是他
接下来以[这个网站](https://pccz.court.gov.cn/pcajxxw/pcgg/ggdh?lx=0)为例介绍一下这个列表页的内容是由JavaScript动态生成的
![image-20220508205159783](https://blog-1301127393.file.myqcloud.com/BlogImgs/202205082207724.png)
![image-20220508205159783](https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/202205082207724.png)
按照以下内容设置你的Post Agent
@@ -174,7 +174,7 @@ href属性里面的内容是他的链接title属性里面的内容则是他
点击Dry Run如果能返回一个带有`body`字段且里面有文本内容说明调用成功
![image-20220508195731732](https://blog-1301127393.file.myqcloud.com/BlogImgs/202205082207725.png)
![image-20220508195731732](https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/202205082207725.png)
接下来点击Save保存再新建一个Website AgentSource设置为刚才的Post Agent。
@@ -205,7 +205,7 @@ href属性里面的内容是他的链接title属性里面的内容则是他
注意修改`data_from_event`的值其他地方与爬取普通网站一样。再新建并配置一下Output AgentRSS的链接就出来了
![image-20220508205856407](https://blog-1301127393.file.myqcloud.com/BlogImgs/202205082207726.png)
![image-20220508205856407](https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/202205082207726.png)
@@ -249,7 +249,7 @@ Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like
注意将原来的`url:??`的部分更改为`"url_from_event": "{{url}}"`,这样就指定使用Phantom JS Cloud为我们获取的完整网页接下来的操作就大同小异了。配置好要爬取的字段和规则后点击Dry Run就可以看到结果
![image-20220508215636780](https://blog-1301127393.file.myqcloud.com/BlogImgs/202205082207727.png)
![image-20220508215636780](https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/202205082207727.png)
@@ -273,7 +273,7 @@ Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like
![image-20220508220438696](https://blog-1301127393.file.myqcloud.com/BlogImgs/202205082207637.png)
![image-20220508220438696](https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/202205082207637.png)
@@ -281,17 +281,21 @@ Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like
## FAQ
* 为什么启动docker容器后访问Huginn显示网络错误
* **为什么启动docker容器后访问Huginn显示网络错误**
Huignn冷启动较慢需要等待三五分钟。如果还是不行检查端口映射和防火墙设置
* 为什么抓取到的包含相对路径的结果网页上可以点击访问但是生成的RSS不能正常使用
* **为什么抓取到的包含相对路径的结果网页上可以点击访问但是生成的RSS不能正常使用**
检查link的设置有些网站只是域名有些网站有子目录具体查看该网页源码中head节点里base url的设置
* 如何对爬取到的某一项的字符串做更高级更复杂的处理?
* 可以参考[Hugnn官方对Liquid语法的文档](https://github.com/huginn/huginn/wiki/Formatting-Events-using-Liquid)以及[Shopify官方关于Liquid模板的语法文档](https://shopify.dev/api/liquid)
可以参考[Hugnn官方对Liquid语法的文档](https://github.com/huginn/huginn/wiki/Formatting-Events-using-Liquid)以及[Shopify官方关于Liquid模板的语法文档](https://shopify.dev/api/liquid)
* **为什么部署了Huginn等了很长时间都无法访问后台页面**
若部署后某个应用一直无法通过浏览器访问请检查是否绑定到了6000/6666等特殊端口浏览器会拦截对这些端口的访问参见[这里](https://blog.colinx.one/posts/docker-compose%E7%9A%84%E9%94%99%E8%AF%AF%E4%BD%BF%E7%94%A8%E5%A7%BF%E5%8A%BF/)
@@ -299,4 +303,8 @@ Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like
* [Huginn官方文档](https://github.com/huginn/huginn/wiki/)
* [Liquid模板引擎语法官方文档](https://shopify.dev/api/liquid/filters/)
* [RSS Man X部署指南](https://blog.colinx.one/posts/rssmanx%E5%AE%89%E8%A3%85%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97/)
* [RSS Man X部署指南](https://blog.colinx.one/posts/rssmanx%E5%AE%89%E8%A3%85%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97/)
* [docker compose 的错误使用姿势](https://blog.colinx.one/posts/docker-compose%E7%9A%84%E9%94%99%E8%AF%AF%E4%BD%BF%E7%94%A8%E5%A7%BF%E5%8A%BF/)

View File

@@ -9,6 +9,7 @@ tags:
- RSS
- Linux
- 教程
- Docker
---
@@ -117,7 +118,7 @@ sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
### 1.3 安装或更新docker-compose
docker-compose目前有两个主要版本V1和V2都是可用的。V1使用Python编写使用时类似`sudo docker-compose up -d`V2则是Golang编写与前者高度兼容但是是作为docker的插件存在的,安装方式不一样。使用命令类似`sudo docker compose up -d`,中间的短杠不需要了。
docker-compose目前有两个主要版本V1和V2都是可用的。V1使用Python编写使用时类似`sudo docker-compose up -d`V2则是Golang编写与前者高度兼容但是是作为docker的插件安装的,使用时类似`sudo docker compose up -d`,中间的短杠不需要了。
如果是按照上文的步骤安装的docker那么默认已经安装了docker compose v2可以通过`docker compose version`查看版本
@@ -126,7 +127,7 @@ docker-compose目前有两个主要版本V1和V2都是可用的。V1使用Pyt
Docker Compose version v2.3.3
```
如果需要是安装的比较老的v1版本的docker-compose想要单纯更新docker-compose而又不想动其他东西的话可以使用以下命令进行更新安装v1版docker-compose的最新版本
如果需要是安装的比较老的v1版本的docker-compose想要单纯更新docker-compose而又不想动其他东西的话可以更新安装v1版本的docker-compose。
首先删除老旧版本(如果有的话)
@@ -148,11 +149,6 @@ pip3 install docker-compose
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple
```
如果pip报错试着升级一下pip的版本
```shell
python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip
```
如果提示pip命令不存在需要先安装一下
```shell
# Ubuntu/Debian
@@ -162,10 +158,17 @@ sudo apt install python3-pip
sudo yum install python3-pip
```
如果pip报错试着升级一下pip的版本
```shell
python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip
```
### 1.4 为Docker配置镜像源
如果Docker下载镜像非常慢你可能需要单独配置一下Docker的镜像源。==注意Docker安装软件源的镜像和Docker镜像或者说映像的国内源并不是同一个英文表述可能更准确一些==
如果Docker下载镜像非常慢你可能需要单独配置一下Docker的镜像源。==**注意Docker安装软件源的镜像和Docker镜像或者说映像的国内源并不是同一个英文表述可能更准确一些**==
* 上文安装docker时配置的是docker的reporepo里含有docker的软件包[国内的镜像](https://mirrors.ustc.edu.cn/help/docker-ce.html)为Docker CE安装软件包的镜像
* 现在我们要配置的是Docker Hub的MirrorDocker里拉取Image默认会访问[Docker Hub](https://hub.docker.com)国内有多个Docker Hub镜像或是Docker镜像加速器如[中科大的源](https://mirrors.ustc.edu.cn/help/dockerhub.html)
@@ -183,13 +186,11 @@ sudo yum install python3-pip
配置完成后`sudo systemctl restart docker`重启docker服务然后输入`sudo docker info`,在输出结果的末尾可以看到`Registry Mirrors`里会出现我们刚刚配置的Docker Hub镜像
群辉等NAS的系统并不是标准版Linux安装的也是魔改版docker上面的配置文件地址并不适用建议自行搜索对应的文档或教程。
## 2. 安装RSS Man X
本项目旨在为 RSS 的同好提供一个方便地搭建自己的 RSS 服务的捷径。毕竟不是所有 RSS 爱好者都懂代码 😂。RSS Man X能够有 RSS 订阅管理、RSS 在线阅读界面,进阶功能包括服务健康自检、海外站点 RSS 解锁等,提供不同的版本供选择,三个版本的 `docker-compose` 文件对应不同的需求,包含的组件和服务有差异。
[RSS MAN X项目](https://github.com/Colin-XKL/RSSmanX)旨在为 RSS 的同好提供一个方便地搭建自己的 RSS 服务的捷径,毕竟不是所有 RSS 爱好者都懂代码 😂。RSS Man X能够有 RSS 订阅管理、RSS 在线阅读界面,进阶功能包括服务健康自检、海外站点 RSS 解锁等,提供不同的版本供选择,三个版本的 `docker-compose` 文件对应不同的需求,包含的组件和服务有差异。
| 组件 / 服务 / 功能名称 | 标准版 | Lite 版 | Ultimate 版 ✨ |
| ---------------------- | ------ | ------- | ------------- |
@@ -207,24 +208,42 @@ sudo yum install python3-pip
| 智能路由 | | | ✅ |
| 反反爬虫 | | | ✅ |
### 详细安装流程
### 2.1 安装流程
安装好了 `docker``docker-compose` 后,可以使用`git clone https://github.com/Colin-XKL/RSSmanX --depth=1`快速克隆本仓库,也可以通过[这个镜像地址](https://archive.fastgit.org/Colin-XKL/RSSmanX/archive/refs/heads/master.zip)下载仓库zip文件[Gitee上也有镜像](https://gitee.com/colin-xkl/RSSmanX)不过不经常更新。
1. cd 进入文件夹,修改.env中的值如密码和TTRSS入口URL等
1. cd 进入文件夹,修改`.env`中的值如密码和TTRSS入口URL等
2. 运行 `sudo docker-compose up -d`
3. 等待程序跑完
4. 安装完成 ✅
#### 相关事宜
### 2.2 相关事宜
1. 访问你设置的 `SELF_URL` 即可看到 Tiny Tiny RSS 的登陆页面,使用默认账户 `admin`,密码 `password` 登陆即可开始使用
2. 如开启海外站点解锁支持,第一次冷启动需要等待 3-5 分钟才能完全启动所有组件。
3. 数据保存位置`/data/docker/`
4. 在 TTRSS 中将原来订阅的 `rsshub.app/*` 更改为 `rsshub/*` 即可使用 RSS Man X内的自建 RSSHub 实例,并激活反反爬虫和海外源加速等功能
5. 关于 ARM 平台的支持可查阅[置顶的 issue](https://github.com/Colin-XKL/RSSmanX/issues/5)
6. 默认情况下只有TTRSS和Huginn可以从外部访问其他组件互相可以访问但不能直接从内部访问以提高安全性
7. RSS Man X的除 lite 以外的版本默认包含了自托管的 mercury 实例,你只需要在插件配置页面设置 mercury 实例地址为 `service.mercury:3000` 即可同理OpenCC实例地址为`service.opencc:3000`
4. 在 TTRSS 中将原来订阅的 `https://rsshub.app/*` 更改为 `http://rsshub/*` 即可使用 RSS Man X内的自建 RSSHub 实例,并激活反反爬虫和海外源加速等功能
5. 如无法访问rsshub的官方文档站点可以使用我维护的反代站点[https://rsshub-doc.azure.colinx.one/](https://rsshub-doc.azure.colinx.one/)
6. 关于 ARM 平台的支持可查阅[置顶的 issue](https://github.com/Colin-XKL/RSSmanX/issues/5)
7. 默认情况下只有TTRSS和Huginn可以从外部访问其他组件互相可以访问但不能直接从内部访问以提高安全性
8. RSS Man X的除 lite 以外的版本默认包含了自托管的 mercury 实例,你只需要在插件配置页面设置 mercury 实例地址为 `service.mercury:3000` 即可同理OpenCC实例地址为`service.opencc:3000`
9. 如果部分RSS源不能订阅检查是否使用了非常规端口。在`.env`文件中设置`RSS_ALLOEW_PORTS`
10. 若部署后某个应用一直无法通过浏览器访问,请检查是否绑定到了`6000`/`6666`等特殊端口,浏览器会拦截对这些端口的访问参见[这里](https://blog.colinx.one/posts/docker-compose%E7%9A%84%E9%94%99%E8%AF%AF%E4%BD%BF%E7%94%A8%E5%A7%BF%E5%8A%BF/)
11. `ls`没有显示`.env`文件是因为以点开头的文件在Linux中都是默认隐藏的可以使用`ls -a`查看到
12. vi/vim编辑文本太麻烦可以尝试使用nano
@@ -238,7 +257,9 @@ sudo yum install python3-pip
* **For Huginn problems:**
[https://github.com/huginn/huginn#readme](https://github.com/huginn/huginn#readme)
### 链接
### 2.3 链接
* [我的 RSS 方案与心得](https://blog.colinx.one/posts/%E6%88%91%E7%9A%84rss%E6%96%B9%E6%A1%88%E4%B8%8E%E5%BF%83%E5%BE%97/)
* [RSS Man X GitHub repo](https://github.com/Colin-XKL/RSSmanX)
* [Huginn 指南:为任意网站制作 RSS](https://blog.colinx.one/posts/huginn%E6%8C%87%E5%8D%97%E4%B8%BA%E4%BB%BB%E6%84%8F%E7%BD%91%E7%AB%99%E5%88%B6%E4%BD%9Crss/)
* [docker compose 的错误使用姿势](https://blog.colinx.one/posts/docker-compose%E7%9A%84%E9%94%99%E8%AF%AF%E4%BD%BF%E7%94%A8%E5%A7%BF%E5%8A%BF/)