中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-08 22:22
47,811 主题排行 / 349,895 发帖 / 今日 0 篇 / 48,253 会员排行
DOS批处理 & 脚本技术(批处理室) » [原创]利用命令行脚本生成指定网站的RSS内容
可打印版本  6,991 / 2
第1楼 ikari 发表于 2006-08-01 23:22
初级用户 发帖 6 积分 58
[原创]利用命令行脚本生成指定网站的RSS内容
流行的RSS

随着各式各样的博客越来越红火,作为特性之一的RSS也为越来越多的人接受和喜爱。
RSS的出现改变了人们从一个网站到另一个网站逐页寻找自己感兴趣的内容的传统浏览方式,
RSS通过可订制的聚合式内容使人们从网站跳转中解放出来,更高效快捷的获取信息。
这些优势使得RSS阅读群不断的扩大,各大网站看到这种趋势也纷纷为自己的网页加入了RSS Feed以供订阅。

无奈的RSS

但是使用RSS自然会分走一部分网站的浏览量,这对于很多网站管理者来说是比较介意的,
所以还是有相当数量的网站持保留态度,暂不提供RSS内容。这对于已经体验到RSS的好处而相当依赖的人来说不算什么好事。
既然伸手讨不到,那就只有自给自足这一条路了,我们可以利用几个很简单的命令行小工具来自动生成RSS。

工具的选择

PHP、ASP这些服务器脚本是高级货,就是太复杂还要配置专门的环境,于是Pass。C++等高级语言门槛更高,于是也Pass。
就只有命令行脚本易学易用,还不需要专门的运行环境资源占用也不大,就是它了。
光靠CMD想干这事儿还是有些困难,还是找几位帮手来共举大业吧:

CURL:凡是和网络上传下载沾边的找它准没错
ICONV:网页编码何其多,就靠它来统一格式了

有这两位帮忙,CMD脚本便是如虎添翼,能人所不能。

设计的思路

无论什么软件都不肯能应用于所有的情况,对于批处理类的脚本来说更是如此。往往一个脚本只能对应一个或一类网站。
所以清晰的思路就异常的重要,有了好的思路就可以反复应用,所需很少工作量就可以修改适应到其他的网站上。
下面以CCF精品技术论坛为例,尝试生成新帖子的RSS内容。

获取页面

要处理内容首先就得获取页面,CURL便是专司此职的。我们只需要下面这个简单的命令就可以获取CCF的『软件使用』子论坛的首页。



cookie@et8.txt是IE的Cooke文件,对于论坛等需要的登陆的网站很有就靠它提供用户名密码。
取得的内容由指定保存在 tmp1.txt 中。

编码处理

由于命令行不能很好的处理 unicode。所以需要用 ICONV 把文本转为 ANSI:



这样我们就将刚才获取的 tmp1.txt 从 UTF-8 转为了 GB2312 并另存为 temp.txt。

最后访问的帖子

既然是订阅新帖子的RSS,那么便需要读取上一次最后列出的帖子,假设我们把上次访问的帖子的ID保存在 last.txt 中:



我们用 last 和 lastcheck 两个扩展环境变量来保存获得的ID。

查找新帖

知道了上次最后访问的ID,我们就可以通过搜索 temp.txt 中的首页前 200 个帖子的ID,以比较的方式筛选出新帖。
同时不要忘了将最新的一篇的ID记录下来,以便写入 last.txt 供下次使用。
对于RSS来说,只有题目和地址是不够的,我们还需要作为摘要的文字,所以我们需要再次使用 CURL 和 ICONV,
获取新帖的页面,来做成完整的RSS内容,同时以 echo 到文件的方式创建 XML 格式。



通过分析页面的内容,可以发现主楼的文字是用 <!-- message --> 和 <!-- / message --> 作为开始和结束的标示的。
所以用 flag 和 first 两个扩展环境变量来做双闸开关,控制文字的输出。

XML的格式化

最后用一个 for 语句将 tmp.xml 格式化为符合 RSS 2.0。
第2楼 electronixtar 发表于 2006-08-02 12:47
铂金会员 发帖 2,672 积分 7,493
好帖子!建议加精!
第3楼 act18l 发表于 2016-08-16 19:59
新手上路 发帖 3 积分 5

[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023