Blogchina To Drupal

三月初,注册了一个域名dup2.org,作为我和我哥的个人网站,并于第一时间在上面搭了一个Drupal的blog服务。于是我面临了许多blogger都曾遇到的一个痛苦问题——搬家。虽然我的blog不多(127篇),就算重新发布一遍工作量也不算太大,可是如果搬家不把blog的发布时间也同时搬过去,意义不大。

上个周末的目标就是和我哥解决这个搬家的问题。我的想法是把所有blog都先下载到本地,用perl或者其它脚本语言把blog的标题、发布时间、正文内容从这些本地文件中抽取出来,然后分析Drupal的数据库表结构,再写个程序把这些抽取出来的东东插入到数据库中。其中难点是1.perl不熟悉,需要再学习;2.研究Drupal的程序,找出存数据库中存blog的表结构;3.需要找找perl的数据库操作范例依葫芦画瓢写个插入数据库的程序。

周六白天去了植物园,下午五点来到哥哥家,他已经用python写了个程序提取blog中的数据(利用python中现成的库把html变成xml,然后取对应标签中的数据。可是这个程序碰到blog中含有表格时,处理的结果有问题)。同时又找了一个Drupal的模块Node Import,通过此模块可以把CSV文件(用逗号分隔字段的文本文件)直接导入到Drupal中。这样一来搬家任务几乎就没啥障碍了,如果提取的数据没有问题,只需把python再顺便做一个CSV文件出来就搞定了(以后再有类似需求,首先想到的就是python而不是perl了)。

在我的注视与参与下,重新写了一个python程序,抛弃了html转xml的思路,直接按字符串处理html(顺便我也领略了python的简单强大的字符串处理方法),把需要的数据完美地从blog中提取出来:)。因为CSV文件要用“,”分隔字段,为了避免混淆再把数据中的“,”变成别的符号;将日期处理成模块中要求的格式;当然最后还要把数据变成UTF-8编码,用iconv命令,这我哥熟,交给他搞定了。

公元二○○六年四月一日晚十时许,先备份数据库(万一失败,还可以恢复),开始导入,几十秒过后,导入完成,进入blog页面检查,搬家成功。

Topic: 技术