使用python3将wordpress博客数据迁移到hexo

前言

为了追求网站访问的稳定性 准备将wordpress博客迁移到hexo上 考虑到数据量比较多 我直接将数据库导出成压缩包 然后下载到本地电脑 然后使用python批量将里面的文章转成markdown格式的文档

准备工作

  1. 导出数据库

    1
    mysqldump -u用户名 -p密码 数据库名 | gzip > 数据库名.sql.gz
  2. 将导出的数据库文件下载到本地 然后双击解压该数据库

    1
    scp -r root@服务器IP:刚导出的数据库所在路径 本地目录
  3. 数据库导入进本地mysql中 方便python连接

    首先创建新数据库:

    1
    mysql>create database 数据库名;

    然后将sql文件导入到该库中:

    1
    mysql -u用户名 -p密码 数据库名 < 数据库名.sql

Python批量转换

python代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# coding:utf-8

##########################
#
# 链接本地mysql数据库将wordpress中的文章提取出来并转成hexo博客格式
#
##########################

import os
import sys
from markdownify import markdownify as md
import pymysql.cursors
import sys
sys.setrecursionlimit(1000000)


# 连接数据库
conn = pymysql.Connect(
host='127.0.0.1',
port=3306,
user='数据库用户名',
passwd='数据库密码',
db='wordpress_it',
charset='utf8mb4'
)
# 获取游标
cursor = conn.cursor()


# 获取所有文章
cursor.execute("SELECT post_title, post_content, post_date FROM wp_posts WHERE post_type='post'")
posts = cursor.fetchall()

# 确保输出目录存在
output_dir = 'hexo_posts'
if not os.path.exists(output_dir):
os.makedirs(output_dir)

tags=["Android","IOS","服务器","Docker","Mysql","Flutter","Java","Hexo"]
postTag="技术文章" #默认分类为

# 遍历每篇文章
for idx, post in enumerate(posts):
title, content,date = post
for tag in tags:
if tag in title:
postTag=tag
break


# 将HTML内容转换为Markdown
markdown_content = md(content)
# 写入Hexo格式的Markdown文件
with open(os.path.join(output_dir, f"{idx+1}.md"), 'w', encoding='utf-8') as f:
f.write("---\n")
f.write(f"title: {title}\n") # 如果要嵌入变量 需要加f
f.write(f"date: {date}\n") # 请将日期替换为实际发布日期
f.write(f"tags: {postTag}\n")
f.write("---\n")
f.write("\n")
f.write(markdown_content)


# 关闭游标和连接
cursor.close()
conn.close()

想要正常运行该代码 需要安装pymysqlmarkdownify两个库:

1
2
pip3 install markdownify
pip3 install pymysql

本文为作者原创 转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

0%