第一个Python程序:抓取ZBlog博客文章

从生活博客首页统计来看,除去草稿和已经删除的文章,博客一共有290篇文章。由于对国内虚拟主机稳定性不太信任,我有定期备份网站文件和数据库的习惯。但文章的备份只是数据库中的记录,用于恢复没有问题,却不适合浏览。我一直在想,万一哪天服务器崩了,我的这些文章该怎么办。

网上其实有一个很好的现成的软件,叫blog_backup,可以备份ZBlog的文章,不过是收费的。文章的格式值不值钱,让我想想……于是想自己写代码来解决。最开始考虑用Java,但由于种种原因拖了许久还没搞定。到现在我想起一幅图,有的人在离金矿几步之遥的地方回头了——没有坚持到最后的人永远也不知道自己离成功有多远,也不知道自己为什么没有成功。困难确实是有的,但还是要去做。

使用python很偶然。以前早就对python抓取网页的功能有所了解(主要是在知乎上),但直到昨天才想到用这个来抓取博客文章。第一个版本很简单,首先主要是参考了《用Python抓取网页文章》,其次是Crossin的《Python基础课程》(我下的是PDF文档)。拿前一段代码一改,单篇博客的内容就能打出来,主要还缺少循环获取多篇文章(控制流)、网址不存在或没有正文内容时继续循环(控制流和异常处理)、去除实体字符(正则表达式替换)、保存到文件(输入输出)。于是参考文档把这些加上了。安装python和编译运行就不说了。

目前已经能把博客文章循环保存到本地了,除了其中的一些字符还没转换,比如’…’ ‘—’。这两个分别是省略号和破折号的一半儿,文章里面还有其他的符号。用UltraReplace完全可以解决,但是这不是程序员的作风。实测保存290篇文档,总大小1.48M,用时2m41s。先保存第一个版本,以后再继续优化(其实也是学习)。计划做的:

1、获取标题、发表时间、分类 —— 正则表达式
2、中文字符处理 —— 正则表达式和网页编码
3、提高写多个文件的速度 —— 多线程

python代码如下(不太熟悉WP插入代码,直接上传文件):

http://pan.baidu.com/s/1mg1QUko