1:输入某人的BLOG,例如http://www.cnblogs.com/JeffreyZhao/。
2:任意打开一篇博客文章,例如:http://www.cnblogs.com/JeffreyZhao/archive/2010/03/21/async-and-parallel-design-patterns-in-fsharp-3-more-agents.html
3:我们看到了博客文章的url格式大致是,http://www.cnblogs.com/JeffreyZhao/+%22archive"+年+月+日+文章标题+".html"
4:OK,我们输入http://www.cnblogs.com/JeffreyZhao/archive/2010/03.html。发现显示的是随笔档案 - 2010年3月。这就意味着我们可以通过更改年月来得到相应的年月的随笔档案。
5:我们从2005年01月一直搜索到2010年12月.构造我们需要搜索的地址列表。储存到httpCategoryUrls这样的List<string>.
6:逐个解析我们的httpCategoryUrls里面的url,采用foreach进行遍历。
其中随便找了个网上的spider组件,可以解析html得到html中的所有链接信息。
因为我们知道文章的url中包含"archive",并且url以.html结尾,
为了防止http://www.cnblogs.com/JeffreyZhao/archive/2010/03.html,这样的连接,我做了Length检查。
通过上述基本的几个步骤大致可以得到某人某年某月的随笔档案。全部保存到httpArticleUrls的List<string>中。
7:已经得到了某人的从2005年到2010年之间的所有文章了,剩下的就是发送Http请求去获取数据,然后本地保存了。
保存采用的是CDOMessage这样的类,该类可以生成MHTML格式的文档。代码如下:
文章的以文章的标题为名字进行保存。如果文章的名称中包含非法的字符,进行替换。
CDO.CdoMHTMLFlags.cdoSuppressNone:代表不进行压缩。这样图片可以嵌入其中。
8:大致功能已经实现,但是代码还有很多地方可以优化的,名称命名等都可以进行修改下,速度,效率啊目前都还没考虑,没有自动下载附件的功能,需要的话其实也挺简单的,得到所有文章中的压缩文件,通过WebClient.DownLoadFile方法下载等。
9:附件下载:BlogDownLoader.rar