花了一个晚上写了一个Python程序,kxw2ebook,可以把科学网博客上的文章下载为电子书并导出到Wordpress里。因为我对科学网的编辑推荐不感冒,所以写这个程序也算是为科学网的作者提供另一个选择。

下载、源代码、使用说明和FAQ等都放在了google code上

http://code.google.com/p/kxw2ebook/

原理大概是这样的:

1. 首先从博客“所有文章”页面下载所有的文章链接
2. 下载文章
3. 通过正则表达式提取文章的主题内容等写入html和xml文件(wordpress导入时需要用)

通过修改脚本中的正则表达式匹配字符串,这个脚本也可以用于其他的博客系统。

几个比较有趣的地方:

1. 科学网似乎用了一种pager叫AspNetPager,在kxw2ebook试图获得多页数据时必须request如下古怪的post data

__EVENTTARGET=right_1%24AspNetPager1&__EVENTARGUMENT=DDDDDDD&__VIEWSTATE=%2FwEPDwUKMTE5MDI4MTYxNw9kFgIC...

我本来以为通过简单的url参数就可以,后来用firefox的LiveHttpHeaders插件截获浏览器请求才知道javascript的__doPostBack()函数会产生这样的浏览器行为。

2. 用pyinstaller将python脚本“编译”成了在windows可以直接运行无需安装python解释环境的standalone程序,通过UPX进行了压缩,但还是有2.5M,作为一个只有console的程序,尺寸是不是太大了。

3. 在测试期间“发现了”GFW,当程序试图下载下面的页面时,

http://www.sciencenet.cn/blog/user_content.aspx?id=25746

连接被重置。不知道GFW对国内的朋友访问国内网站是否有影响,大家可以试试。

将帖子导出到Wordpress还是比较成功的,但目前还无法导出评论。下面是个导出的例子:

科学网博客上的原址:

http://www.sciencenet.cn/blog/科学网编辑部.htm

导出到wordpress.com的效果

http://kxw2ebook.wordpress.com

导出到72pines.com的效果

http://kxw2ebook.72pines.com

阅读(860 次)

Creative Commons 授权
此文, 除非有特别申明, 的授权协议是 Creative Commons Attribution-Noncommercial 2.5 China Mainland 网站授权.