导出CSDN文章,并转成Hexo要求的样式,博客迁移

想把`CSDN`博客同步到拿`GitHub Page`搭的独立博客上去,找了下,发现有人用`Python`写了个工具,可以将博客导出为`Markdown`和`HTML`格式:[csdn-blog-export](https://github.com/gaocegege/csdn-blog-export)

把它搬到了百度盘,链接: http://pan.baidu.com/s/1o8fpxGI 密码: pgbb

用法很简单(注意:博客主题需切回“碧海蓝”,我的“极客世界”主题失效):
./main.py -u CSDN用户名 -f markdown./main.py -u CSDN用户名 -f html

便能得到我们博客的所有博文。
拿到博文后,我想把它改为Hexo接受的格式,主要是在.md格式文件头添加一段文件描述,像这样:

title: Hello World
date: 2014-05-27 10:04:08
tag: 博客
category: 博客建设
---

顺便把文件名该为博文名。下面操作需要同时导出.md格式和.html格式,Python脚本从.html文件中提取出博文标题和博文创建时间,将它们插入.md文件:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import os
import re
#解析博文HTML,获取博文时间、标题标签
from bs4 import BeautifulSoup
#解决中文编码问题
import codecs

mdPath = '/Users/wayne/blogposts/'
htmlPath = '/Users/wayne/blogposts/html/'
mdPosts = os.listdir(mdPath)

for postName in mdPosts:
    if postName.endswith('.md'):
        #备份工具得到的文件名像这样:21049457.md,对当前文件夹中.md文件进行操作
        #获取文件名中8位数字,存于prefix中,用于匹配和它对应的HTML文件
        #然后从HTML文件中挖出博文发布时间,保存在timeStamp中
        prefix = postName[:8]
        html = open(htmlPath + prefix + '.html', 'r')
        soup = BeautifulSoup(html)
        tag = soup.find_all('span', class_="link_postdate")
        timeStamp = tag[0].string
        print timeStamp

        #从HTML中获取博客标题,用于重命名.md文件
        title = soup.title
        temp = title.string
        pos = temp.index(" - ")
        newFileName = temp[:pos]
        print newFileName

        #弃用!
        #.md文件中第一行大致长这样:#  [ Objective-C常用宏定义 ](/ichenwin/article/details/52813659)
        #方括号中就是博文名,下面这段代码负责从.md文件第一行获取文章名
        # mdFile = codecs.open(mdPath + postName, "r", 'utf-8')
        # contents = mdFile.readlines()
        # firstLine = contents.pop(0)
        # print "firstline:" + firstLine
        # newFileName = re.compile('\[([^]]+)\]').findall(firstLine)[0]
        # mdFile.close()

        #将.md中博文读入contents,往contents插入Hexo头部
        #然后写回.md文件
        mdFile = codecs.open(mdPath + postName, "r", 'utf-8')
        contents = mdFile.readlines()
        mdFile.close()
        contents.insert(0, "---\n")
        contents.insert(0, u"category: 技术笔记\n")
        contents.insert(0, "tags: iOS\n")
        contents.insert(0, "date: " + timeStamp + "\n")
        contents.insert(0, "title: " + newFileName + "\n")

        mdFile = codecs.open(postName, "w", 'utf-8')
        newContents = "".join(contents)
        mdFile.write(newContents)
        mdFile.close()

        html.close()

        #重命名.md文件
        os.rename(os.path.join(mdPath, postName), os.path.join(mdPath, newFileName + ".md"))
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值