建立程序设计知识库 博客下载工具
我们都心知肚明,互联网不是每天都为我们开放着。一个好站点,由于各种原因,很容易就从我们的视野中消失。
为此,分享一下我是如何搜集优秀的博客文章,如何加工整理,消化。
经常写程序,需要经常查阅一些编程文档。一般编程知识的来源有以下几个途径
MSDN
MSDN是一个很优秀的知识库,这个离线版的MSDN几乎包含了所有与微软开发相关的主题。
优秀的博客站点
如果是做.NET开发,推荐的博客有以下几个
博客园 cnblogs.com
点部落 http://www.dotblogs.com.tw/(台湾)
codeproject.com
经常在博客园看文章,或是关于技术方面的总结,或是某个系列的专题,比如Linq,EF,NHibernate. 看完之后,总想一子下把他们存到硬盘中,怕下次又找不到。比如最近经常收到博客园的电子期刊,就有一种全部下载下来,做成doc或是pdf的冲动。
基本的方式,一篇篇的打开网页,另存为html文件,过程繁琐,而且有些网页会提示无法保存。
先看工具的用法。这个工具是我设计的,稍后会放出下载的地址(epn.codeplex.com)
启动BDS程序,点菜单中的New或是工具栏中的New按钮,界面如下
其实,博客就是html网页,把它存到本地的方式,也就是保存网页的方式。在这里我规定了三种下载方式
1 Id 如果你看到谁的Linq系列写的很好,或是EF的教程很详细,你想一下子把它的所有博客日志都下载到本地,就应该选这种方式。它会根据你输入的博客帐号,分析该博主的所有随笔,然后逐个下载到本地。
来看一下效果
在上面的界面中,选择Blog组中的Id,打开窗口如下
从窗口的名字中可以看出,它是为了下载某个博主的所有随笔内容。
在这里我做了用了个小技巧。我将经常关注的博主存放到一个文本文件中,上面的Download Blog By UserId启动时,会去找Id.txt这个文件,加载到主窗口中,这样省去了为次要敲博主的Id的时间。
Output Path就是要保存的html文件的路径,所下载的文章全部保存在这个路径下。
它会用博主的Id建立一个子目录,然后把它的文章放到这个路径下面,以防止重复。
如下图所示,Foundation写了一系列非常优秀的工作流的文章,我就迫不急待的把它保存下来了。
再来看url的写法,细心的朋友可能已经发现了,有两种类型的url
http://www.cnblogs.com/lyj/
-http://www.cnblogs.com/peterzb/
第一个是标准的路径名称,第二个路径前面有带-。这个小技巧会告诉程序,暂时跳过peterzb的博客,不用分析和下载。这种情况多半发生在,该博主最近没有更新博客,没有必要下载。
2 Url 有时候我们看到一些好的地址连接。比如有的博主会提供一些MSDN或是CodeProject中的相似的文章的连接,
这时,我只需要下载这些连接的文章,就可以使用这种方式
打开窗口的效果同上,它会直接去下载指定连接的网页文件。
这种方式,可以应用到博客园的电子期刊。电子期刊会很详细的列出优秀博客文章的名称和地址,我们要做的就是,把地址拷贝到这里,然后开始下载。下载方式与前面的相同,
仍然是保存为mht文件。
mht文件会包含图片,评论,是最完整的格式。
也考虑过,将下载的mht文件直接转成doc或是pdf文件。这不难,只是一句API调用就可以,很容易。
3 Text 文本 这种方式,提供从一段html片段文本中下载网页连接的能力。有时候我们发现整理url很麻烦。比如博客园的电子期刊,你需要用文本编辑器打开它的html源代码,逐个的找出文章的url,整理到一起,这样做起来有些麻烦,不方便。于是,我就想到这种方式,你要干的活,就是右键,查看网页源代码,然后把这个html的片段copy到这里,
分析程序会先提取这一段文本的所有html连接,再逐个下载。
打开程序跑了半个小时,在我的电脑里面,就存了1G多的博客文章。在上网不方便或是网速很慢的情况下,这些知识库的文章,将是重要的参考资料,也是思考的来源。
因为这些博客资料和文章都是有版权的,不推荐整理成PDF供下载,适合于留着自己学习,深入的学习。
接下来的步骤就是用Lucene.NET给这些文章建立索引,以快速的方式来检索内容。这又是另一个主题,暂且不表。
论坛
论坛也是编程知识和经验的来源地,对优秀的thread,我们仍然可以考虑把它下载到本地,整理成PDF或DOC。
暂时没有这个功能的可用模块,当看到很好的主题,有保存整个论坛冲动的时候,再来做这个程序。
原理也是一样的,保存为本地mht文件。
希望可以帮助到你。