使用CHM文档 采集随笔(续)

简介: 原文 http://www.cnblogs.com/codealone/archive/2013/04/23/3037780.html 背景   上篇说到我们可以将自己的博客内随笔/文章/日记备份得到的xml 转换成CHM文档,如果我们希望将某个大牛的博客随笔全部导出,这个能不能实现呢?写在这里算是废话了,既然有了这篇博客,那么这个问题,一定是可以解决的。

原文 http://www.cnblogs.com/codealone/archive/2013/04/23/3037780.html

背景

  上篇说到我们可以将自己的博客内随笔/文章/日记备份得到的xml 转换成CHM文档,如果我们希望将某个大牛的博客随笔全部导出,这个能不能实现呢?写在这里算是废话了,既然有了这篇博客,那么这个问题,一定是可以解决的。

资源下载

  可执行程序

  源代码

  示例文档截图(路过秋天):

      

开发思路

  1.根据博客园ID得到随笔类别,如地址为 http://www.cnblogs.com/cyq1162/,则博客园ID为cyq1162,请求页面http://www.cnblogs.com/cyq1162/mvc/blog/sidecolumn.aspx。请求结果如下:

      

  通过正则匹配到该页面的链接,以某个链接为例,http://www.cnblogs.com/cyq1162/category/268820.html,其中包含cyq1162/category,基于这样的规则,我们可以得到所有的随笔分类链接。

  2.得到随笔分类链接之后,则请求该链接的内容,得到该随笔下的所有文章链接。文章链接,以某个链接为例,http://www.cnblogs.com/cyq1162/archive/2013/03/17/2964746.html,其中包含cyq1162/archive,基于这样的规则,我们可以得到所有的文章链接。

  3.得到文章的链接,这样就能得到文章正文。我们要获取的有文章标题、文章正文、发布时间。这里没有去尝试获取文章作者,不好获取。前面指的需要获取的3个内容,在某个明确id的节点里。这里使用了HtmlAgilityPack进行HTML解析,感觉非常方便,可以直接根据ID得到元素,然后获取它的内容。解析代码如下:

复制代码
                            //下载随笔内容 替换后保存本地
                            var contentCode = GetContent(articleUrl);//获取随笔内容
                            HtmlDocument htmlCode = new HtmlDocument();
                            htmlCode.LoadHtml(contentCode);
                            var titleNode = htmlCode.GetElementbyId("cb_post_title_url");
                            var postBody = htmlCode.GetElementbyId("cnblogs_post_body");
                            var postDate = htmlCode.GetElementbyId("post-date");
                            //var topics = htmlCode.GetElementbyId("topics");
                            var localHtml = template
                       .Replace("{channelTitle}", titleNode.InnerText)//博文标题
                       .Replace("{preContent}", DownImage(postBody.InnerHtml))//博文内容
                       .Replace("{channelHref}", titleNode.GetAttributeValue("href", "#"))//博文地址
                       .Replace("{channelLink}", userId + ".cnblogs.com")//博客地址
                       .Replace("{channelAuthor}", userId);//博文作者
复制代码

 

  4.下一步则是编译CHM了,这里就不重复介绍了。

 

  其中参考啊汉的博文 《一键构造你的博客目录》 构造了随笔目录。

  代码逻辑就这么多,比较简单,希望大伙喜欢。如果设置首页不显示随笔分类的话,是无法采集的,若是博客引用了自定义样式,需要手动添加该样式在。有其他的问题,可以向我反馈,也可以自己下载代码调试看看。

 



   如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的推荐】按钮。

   感谢阅读,希望这篇文章能给你带来帮助!

目录
相关文章
|
5天前
|
云安全 人工智能 安全
AI被攻击怎么办?
阿里云提供 AI 全栈安全能力,其中对网络攻击的主动识别、智能阻断与快速响应构成其核心防线,依托原生安全防护为客户筑牢免疫屏障。
|
15天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
9天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
614 216
|
存储 人工智能 监控
从代码生成到自主决策:打造一个Coding驱动的“自我编程”Agent
本文介绍了一种基于LLM的“自我编程”Agent系统,通过代码驱动实现复杂逻辑。该Agent以Python为执行引擎,结合Py4j实现Java与Python交互,支持多工具调用、记忆分层与上下文工程,具备感知、认知、表达、自我评估等能力模块,目标是打造可进化的“1.5线”智能助手。
856 61
|
7天前
|
人工智能 移动开发 自然语言处理
2025最新HTML静态网页制作工具推荐:10款免费在线生成器小白也能5分钟上手
晓猛团队精选2025年10款真正免费、无需编程的在线HTML建站工具,涵盖AI生成、拖拽编辑、设计稿转代码等多种类型,均支持浏览器直接使用、快速出图与文件导出,特别适合零基础用户快速搭建个人网站、落地页或企业官网。
1284 157
|
5天前
|
编解码 Linux 数据安全/隐私保护
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
241 138
|
7天前
|
存储 安全 固态存储
四款WIN PE工具,都可以实现U盘安装教程
Windows PE是基于NT内核的轻量系统,用于系统安装、分区管理及故障修复。本文推荐多款PE制作工具,支持U盘启动,兼容UEFI/Legacy模式,具备备份还原、驱动识别等功能,操作简便,适合新旧电脑维护使用。
529 109