V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Digitalgk  ›  全部回复第 1 页 / 共 3 页
回复总数  54
1  2  3  
18 小时 32 分钟前
回复了 NianBroken 创建的主题 程序员 你认为目前最强的免费 AI 是什么?
gpt 未降智版本 其次 grok deepseek 太拥挤
11 天前
回复了 ZakaryTime 创建的主题 程序员 求会 RSShub 定制路由的大佬帮帮忙
@ZakaryTime chatGPT 的事儿 哈哈
11 天前
回复了 ZakaryTime 创建的主题 程序员 求会 RSShub 定制路由的大佬帮帮忙
为了帮助你为这些政府网站创建自定义 RSSHub 路由,以下是分步指南和示例代码模板。由于你已挂载自定义路由目录,我们将通过以下步骤实现:

一、基础准备
在 NAS 的./rsshub/lib/routes 目录下新建文件夹 government

每个分类需要创建两个文件:

radar.js (域名匹配规则)

具体路由文件(如 cqgov.js )

二、重庆政府示例(政策文件库)
步骤 1:分析页面结构
打开 http://www.cq.gov.cn/zwgk/zfxxgkml/szfwj/ 按 F12 查看元素结构:

列表项通常位于 ul.list li 选择器

标题在<a>标签内

日期在 span.date

步骤 2:创建路由规则
新建 ./rsshub/lib/routes/government/radar.js 内容如下:

javascript
复制
module.exports = {
'cq.gov.cn': {
_name: '重庆市政府',
'www': [
{
title: '政策文件库',
docs: 'government/cqgov.md',
source: ['/zwgk/zfxxgkml/szfwj'],
target: '/cq/gov/szfwj',
},
// 其他分类可在此追加
],
},
'gov.cn': {
_name: '中国政府网',
'www': [
{
title: '最新政策',
docs: 'government/central.md',
source: ['/zhengce/zuixin'],
target: '/gov/zhengce/zuixin',
},
// 其他分类可在此追加
],
},
};
步骤 3:编写抓取逻辑
新建 ./rsshub/lib/routes/government/cqgov.js 内容如下:

javascript
复制
const got = require('@/utils/got');
const cheerio = require('cheerio');
const { parseDate } = require('@/utils/parse-date');

module.exports = async (ctx) => {
const baseUrl = 'http://www.cq.gov.cn/zwgk/zfxxgkml/szfwj/';
const { data: response } = await got(baseUrl);
const $ = cheerio.load(response);

const list = $('ul.list li')
.toArray()
.map((item) => {
const $item = $(item);
const $a = $item.find('a');
return {
title: $a.text(),
link: new URL($a.attr('href'), baseUrl).href,
pubDate: parseDate($item.find('span.date').text(), 'YYYY-MM-DD'),
};
});

ctx.state.data = {
title: '重庆市政府文件',
link: baseUrl,
item: list,
};
};
三、中国政府网示例(最新政策)
步骤 1:分析页面结构
打开 https://www.gov.cn/zhengce/zuixin/ 查看:

文章列表通常在 ul.list 或 div.news_box 中

注意有些页面可能需要 JS 渲染(已配置 Browserless )

步骤 2:编写抓取逻辑
新建 ./rsshub/lib/routes/government/central.js:

javascript
复制
const got = require('@/utils/got');
const cheerio = require('cheerio');

module.exports = async (ctx) => {
const baseUrl = 'https://www.gov.cn/zhengce/zuixin/';
const { data: response } = await got(baseUrl);
const $ = cheerio.load(response);

const list = $('div.news_box div.list li')
.toArray()
.map((item) => {
const $item = $(item);
const $a = $item.find('a');
return {
title: $a.text(),
link: new URL($a.attr('href'), baseUrl).href,
pubDate: $item.find('span.date').text().trim(),
};
});

ctx.state.data = {
title: '最新政策 - 中国政府网',
link: baseUrl,
item: list,
};
};
四、部署与测试
重启 RSSHub 容器使新路由生效:

bash
复制
docker-compose restart rsshub
访问测试:

重庆政策文件: http://你的 NAS 地址:1200/cq/gov/szfwj

中央最新政策: http://你的 NAS 地址:1200/gov/zhengce/zuixin

五、常见问题处理
动态加载内容:在路由文件中添加 require('./utils/puppeteer')使用浏览器渲染

分页支持:使用 for 循环遍历页面

特殊编码:添加 response.data = iconv.decode(response.data, 'gb2312')处理 GBK 编码

六、扩展建议
建议为每个网站单独建立路由文件

使用 RSSHub 官方文档作为参考: https://docs.rsshub.app/guide/

复杂页面建议使用 Postman 测试选择器

如需完整实现所有列出的 URL 路由,建议按此模式逐个分析页面结构后编写对应规则。如果遇到具体页面的解析问题,可以提供页面 HTML 片段,我可协助调试选择器。
14 天前
回复了 BeijingBaby 创建的主题 生活 记一次结石发作经历
记得多吃带汤的 馄饨之类 干 2 大碗 躺着别动 忍着慢慢排
我的畅网 J4125 可以插 sim 卡
@Digitalgk 卧槽 没看清 什么 最后一位 255 ?
很简单啊 光猫直连电脑 手动填个同网段的 ip 进光猫改就行了
双 wan 路由器 做个策略即可 用 softether
春节快乐。
身为洛阳本地土著 从这两天开始 基本开车不去市区了 各大商圈基本开车没法去 人巨多
32 天前
回复了 EZG997 创建的主题 宽带症候群 办公室网络问题求助。
你需要一台双 wan 口 路由器 做策略就行了
34 天前
回复了 Jammmm 创建的主题 汽车 12w 预算之内,家庭第一辆车选购
2.0 混动思域
36 天前
回复了 zhoushuo 创建的主题 汽车 人生第一辆车求推荐
2.0 油混思域
那不就是组播了?虚拟个 ikuai open 都行 不过我没有开 iptv 业务 用的天光云影 app 把肥羊源码导入进去 随便看各种央视卫视 也不需要 ipv6
65 天前
回复了 zhangsimon 创建的主题 推广 分享下副业经历,顺便抽个奖
支持一下!!
没感觉 500M 联通宽带 香港节点 speedtest.net 能跑到 600M.
前几天刚恢复一套 无偿 t. me/facelygk
1  2  3  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   903 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 32ms · UTC 22:14 · PVG 06:14 · LAX 14:14 · JFK 17:14
Developed with CodeLauncher
♥ Do have faith in what you're doing.