0

0

手动生成评论RSS的代码实例

Y2J

Y2J

发布时间:2017-05-05 09:21:52

|

2088人浏览过

|

来源于php中文网

原创

最近博客园讨论气氛热烈,有价值的评论也层出不穷。有时候我们会很希望订阅某篇文章的评论rss,只可惜博客园目前没有这个功能。对于注册用户来说,我们可以通过点击评论框下方的“订阅回复”链接,这样就会在出现新评论的时候收到邮件。可惜匿名用户,只得不断刷新才能关注最近讨论到什么地方了。不过我们是什么人?我们是程序员,这点障碍对我们来说应该是在简单不过的小事了。自己搭一个站点,获取页面数据,分析html,输出为rss,就这么简单。

老赵为此作了一个最最简单的示例,可以订阅http://jeffreyzhao.cnblogs.com上任意一篇文章的评论。由于只是简单的个人工具程序,所以完全不考虑性能、伸缩性、扩展性,容错性,也抛弃任何的单元测试依赖注入等“最佳实践”。总之一句话,怎么容易怎么来。

这个示例由两部分组成,第一部分是个静态HTML页面,根据文章URL生成并转向至其RSS链接。寥寥数行HTML和JavaScript



    博客园RSS
    


    

CommentRss.ashx将为我们输出评论的RSS。它的代码如下:

public class CommentRss : IHttpHandler{    public void ProcessRequest(HttpContext context)
    {        string url = context.Request.QueryString["url"];        WebClient webClient = new WebClient();
        webClient.Encoding = Encoding.UTF8;        string html = webClient.DownloadString(url);

        context.Response.ContentType = "text/xml";
        context.Response.ContentEncoding = Encoding.UTF8;        SyndicationFeed feed = GetRssFeed(url, html);        Rss20FeedFormatter rssFormatter = new Rss20FeedFormatter(feed);        XmlWriter rssWriter = XmlWriter.Create(context.Response.Output);
        rssFormatter.WriteTo(rssWriter);
        rssWriter.Close();
    }    private static SyndicationFeed GetRssFeed(string url, string html)
    {
        ...
    }    public bool IsReusable { get { return false; } }
}

其实.NET框架已经为我们准备了太多太多有用的工具,我们只需要将它们拼接起来即可。例如有了WebClient类,三行代码便可下载到页面的HTML。然后我们通过GetRssFeed方法来获得一个SyndicationFeed对象,再通过Rss20FeedFormatter输出。SyndicationFeed和Rss20FeedFormatter都是.NET 3.5中自带的类库,放在System.ServiceModel.dll程序集中的System.ServiceModel.Syndication命名空间里,可以方便读取或生成Atom 1.0或RSS 2.0格式的XML为我们所用。更多信息可以参考InfoQ中文站的这篇报道:WCF的Web编程模型资源。

GetRssReed的关键在于分析HTML字符串,老赵在这里使用了正则表达式匹配出每条评论的标题、URL、时间、用户和内容。然后构造出一个SyndicationFeed对象就再简单不过了。可惜的是,博客园不同模板的HTML不同,因此老赵的这个示例只支持现在用的这个模板。您可以自己改造,例如为CommentRss.ashx增加一个新的参数,用于指名HTML的解析方式,便可以用于多个模板了。

这个示例使用起来也非常简单,您可以将其编译或部署在本地的IIS上,打开Default.html页面,将文章的URL复制进去,如《老赵谈IL(2)》一文的URL:

粘贴URL链接

论小文
论小文

可靠的论文写作助手,包含11种学术写作类型,万字论文一键生成,可降重降AIGC,参考文献真实可标注,图表代码均可自定义添加。

下载

点击按钮,便会链接至RSS页。于是在IE中便会展示为:

评论RSS

此时您只要把URL放入本地的RSS阅读器即可。因为程序部署在您的机器上,因此您无法使用Google Reader等工具进行订阅。如果您有条件的话,把它们放到虚拟空间等地方即可。由于您的程序只为您一个人服务,因此不会占用大量资源,目前的写法也足够了。

我们是程序员。自己动手,丰衣足食。

 【相关推荐】

1. RSS高效入门教程

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
java入门学习合集
java入门学习合集

本专题整合了java入门学习指南、初学者项目实战、入门到精通等等内容,阅读专题下面的文章了解更多详细学习方法。

2

2026.01.29

java配置环境变量教程合集
java配置环境变量教程合集

本专题整合了java配置环境变量设置、步骤、安装jdk、避免冲突等等相关内容,阅读专题下面的文章了解更多详细操作。

2

2026.01.29

java成品学习网站推荐大全
java成品学习网站推荐大全

本专题整合了java成品网站、在线成品网站源码、源码入口等等相关内容,阅读专题下面的文章了解更多详细推荐内容。

0

2026.01.29

Java字符串处理使用教程合集
Java字符串处理使用教程合集

本专题整合了Java字符串截取、处理、使用、实战等等教程内容,阅读专题下面的文章了解详细操作教程。

0

2026.01.29

Java空对象相关教程合集
Java空对象相关教程合集

本专题整合了Java空对象相关教程,阅读专题下面的文章了解更多详细内容。

3

2026.01.29

clawdbot ai使用教程 保姆级clawdbot部署安装手册
clawdbot ai使用教程 保姆级clawdbot部署安装手册

Clawdbot是一个“有灵魂”的AI助手,可以帮用户清空收件箱、发送电子邮件、管理日历、办理航班值机等等,并且可以接入用户常用的任何聊天APP,所有的操作均可通过WhatsApp、Telegram等平台完成,用户只需通过对话,就能操控设备自动执行各类任务。

25

2026.01.29

clawdbot龙虾机器人官网入口 clawdbot ai官方网站地址
clawdbot龙虾机器人官网入口 clawdbot ai官方网站地址

clawdbot龙虾机器人官网入口:https://clawd.bot/,clawdbot ai是一个“有灵魂”的AI助手,可以帮用户清空收件箱、发送电子邮件、管理日历、办理航班值机等等,并且可以接入用户常用的任何聊天APP,所有的操作均可通过WhatsApp、Telegram等平台完成,用户只需通过对话,就能操控设备自动执行各类任务。

16

2026.01.29

Golang 网络安全与加密实战
Golang 网络安全与加密实战

本专题系统讲解 Golang 在网络安全与加密技术中的应用,包括对称加密与非对称加密(AES、RSA)、哈希与数字签名、JWT身份认证、SSL/TLS 安全通信、常见网络攻击防范(如SQL注入、XSS、CSRF)及其防护措施。通过实战案例,帮助学习者掌握 如何使用 Go 语言保障网络通信的安全性,保护用户数据与隐私。

8

2026.01.29

俄罗斯Yandex引擎入口
俄罗斯Yandex引擎入口

2026年俄罗斯Yandex搜索引擎最新入口汇总,涵盖免登录、多语言支持、无广告视频播放及本地化服务等核心功能。阅读专题下面的文章了解更多详细内容。

622

2026.01.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
RSS高效入门教程
RSS高效入门教程

共10课时 | 4.6万人学习

ASP 教程
ASP 教程

共34课时 | 4.2万人学习

麻省理工大佬Python课程
麻省理工大佬Python课程

共34课时 | 5.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号