kxw2ebook: 科学网博客文章下载导出器
花了一个晚上写了一个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的效果
阅读(860 次)