如何在BlogSpot中一次性批量上传多篇博文?有哪些可行实现方案?
Blogger批量导入博文解决方案
一、XML格式导入失效原因
- 缺失必填校验字段:当前XML缺少
published(发布时间)、updated(更新时间)两个Atom标准必填字段,Blogger官方导入校验规则会直接拦截不符合规范的文件,时间需符合RFC3339格式,示例为2024-01-01T10:00:00Z - ID字段不符合规范:
ns0:id不支持自定义普通字符串,需遵循tag:blogger.com,1999:blog-[博客ID].post-[文章唯一标识]的格式,也可删除该字段由系统自动生成 - 特殊字符未转义:若博文内容包含
<、>、&等XML保留字符,未做转义处理会导致XML解析失败,导入流程中断
二、Python批量上传实现方案
通过Google官方Blogger API v3实现批量上传,容错率和可控性远高于XML导入,操作步骤如下:
- 前置准备
- 前往Google Cloud控制台启用Blogger API,生成OAuth2或服务账号授权凭据
- 安装官方Python依赖包:
pip install google-api-python-client google-auth-httplib2 google-auth-oauthlib
- 批量上传示例代码
from googleapiclient.discovery import build from google.oauth2 import service_account import time # 基础配置 SCOPES = ["https://www.googleapis.com/auth/blogger"] # 替换为你的凭据文件本地路径 CRED_PATH = "./service_account.json" # 替换为你的Blogger博客ID BLOG_ID = "1234567890123456789" # 初始化API客户端 cred = service_account.Credentials.from_service_account_file(CRED_PATH, scopes=SCOPES) blogger_client = build("blogger", "v3", credentials=cred) # 博文数据列表,可自行编写读取逻辑从本地HTML/Markdown文件批量解析生成 post_list = [ { "title": "博文标题1", "content": "<p>博文HTML内容</p>", "labels": ["分类A", "标签1"] }, # 剩余85篇博文按上述格式补充 ] # 批量上传 for post in post_list: req_body = { "kind": "blogger#post", "title": post["title"], "content": post["content"], "labels": post["labels"], # 如需指定发布时间可增加published字段,需符合RFC3339格式 # "published": "2024-01-01T12:00:00Z" } # isDraft设为True则上传为草稿,可先测试1-2篇确认格式无误后再改为False正式发布 resp = blogger_client.posts().insert(blogId=BLOG_ID, body=req_body, isDraft=True).execute() print(f"上传完成,文章ID:{resp['id']}") # 增加延时避免触发API限流 time.sleep(1)
- 注意事项
- 首次使用建议先上传1-2篇草稿,确认内容格式、分类展示均正常后再执行全量上传
- 若博文为Markdown格式,可引入
markdown库先转换为HTML格式再传入content字段
内容的提问来源于stack exchange,提问作者user16748482
相关产品推荐
相关产品推荐

