diff --git a/content/posts/Huginn指南:为任意网站制作RSS.md b/content/posts/Huginn指南:为任意网站制作RSS.md index 79644e3..b20f8e1 100644 --- a/content/posts/Huginn指南:为任意网站制作RSS.md +++ b/content/posts/Huginn指南:为任意网站制作RSS.md @@ -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 Agent,Source设置为刚才的Post Agent。 @@ -205,7 +205,7 @@ href属性里面的内容是他的链接,title属性里面的内容则是他 注意修改`data_from_event`的值,其他地方与爬取普通网站一样。再新建并配置一下Output Agent,RSS的链接就出来了 -![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/) \ No newline at end of file +* [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/) + + + diff --git a/content/posts/RSSManX安装部署指南.md b/content/posts/RSSManX安装部署指南.md index e2dea10..1699a91 100644 --- a/content/posts/RSSManX安装部署指南.md +++ b/content/posts/RSSManX安装部署指南.md @@ -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的repo,repo里含有docker的软件包,[国内的镜像](https://mirrors.ustc.edu.cn/help/docker-ce.html)为Docker CE安装软件包的镜像 * 现在我们要配置的是Docker Hub的Mirror,Docker里拉取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/) \ No newline at end of file