使用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了,这里就不重复介绍了。

 

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

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

 



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

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

目录
相关文章
|
Windows
阿里云的在线文档中,通常不提供直接导出为PDF或其他文档格式的功能
阿里云的在线文档中,通常不提供直接导出为PDF或其他文档格式的功能
635 1
|
7月前
|
搜索推荐 定位技术 数据安全/隐私保护
方便、免费的PDF在线处理网站汇总:PDF合并、文字编辑、页面提取与删除、格式转换…
方便、免费的PDF在线处理网站汇总:PDF合并、文字编辑、页面提取与删除、格式转换…
152 1
|
存储 XML 前端开发
文件上传与PDF报表入门1
文件上传与PDF报表入门
809 0
文件上传与PDF报表入门1
|
XML SQL 数据可视化
文件上传与PDF报表入门2
文件上传与PDF报表入门
169 0
|
C# Windows
C#编程学习15:应用程序帮助文档(chm/pdf)制作与C#调用
C#编程学习15:应用程序帮助文档(chm/pdf)制作与C#调用
C#编程学习15:应用程序帮助文档(chm/pdf)制作与C#调用
|
JavaScript 前端开发
pdf.js插件使用记录,在线打开pdf
原文:pdf.js插件使用记录,在线打开pdf 天记录一个js库:pdf.js。主要是实现在线打开pdf功能。因为项目需求需要能在线查看pdf文档,所以就研究了一下这个控件。 有些人很好奇,在线打开pdf文档浏览器不是支持吗。
2520 0
APICloud 实现文档下载和预览功能
文档下载是很多app,尤其是企业应用中常用的功能。使用APICloud开发app时,可以使用api.download方法实现下载;预览文档可以使用superFile 模块。superFile 模块封装了基于腾讯浏览服务TBS,使用X5Webkit内核,实现文件的展示功能,支持多种文件格式(PDF、Word、Execl、TXT、PPT)。
318 0
APICloud 实现文档下载和预览功能
|
Web App开发 SQL .NET

相关实验场景

更多