Pythonを使って、noteエクスポートファイル(xml)から、必要な情報を取り出す
noteのエクスポートファイル(XML)を、自前サイトの形式に変換して保管しようとしている。その1歩目として、pythonを使って、エクスポートファイルからタイトルと投稿日を抜き出してみた。
コード
import sys
import xml.etree.ElementTree as ET
xmlns_excerpt="http://wordpress.org/export/1.2/excerpt/"
xmlns_content="http://purl.org/rss/1.0/modules/content/"
xmlns_wfw="http://wellformedweb.org/CommentAPI/"
xmlns_dc="http://purl.org/dc/elements/1.1/"
xmlns_wp="http://wordpress.org/export/1.2/"
print ("***** noteエクスポートファイルから、必要なデータを取り出す *****")
print ("** start")
args = sys.argv
input_file = args[1]
print ("** parse start")
tree = ET.parse(input_file)
root = tree.getroot()
for item in root.findall('channel/item'):
title = item.find('title').text
print ("** title :",title)
post_date = item.find("wp:post_date", {'wp': xmlns_wp}).text
print ("** post date :",post_date)
print ("** parse end")
print ("** end")
処理結果
***** noteエクスポートファイルから、必要なデータを取り出す *****
** start
** parse start
** title : ルーター(アクセスポイント)交換
** post date : 2024-12-18 20:11:08
** title : 音声転送で振り出しに戻る
** post date : 2024-12-22 18:38:55
** title : 座りすぎ解消
** post date : 2024-12-22 18:48:21
** title : 自転車の分解備忘録
** post date : 2024-12-26 15:19:55
** title : Inkscape 1.4
** post date : 2024-12-27 11:57:07
** parse end
** end
自分の投稿文書のエクスポートファイルを入力した結果。
未投稿(下書き保存)のデータもエクスポートできているのを確認。
追記(2025/1/7)
namespace部分を以下のようにすると、もっと記述が楽になる。
xmlns_wp ={"wp" :"http://wordpress.org/export/1.2/"}
:
post_date = item.find("wp:post_date", xmlns_wp).text
追記(2025/1/10)
ちゃんとPythonのドキュメントを読むと、namespaceの記述の事例が記述されていた。「Pythonの辞書を使っているのだから、ひとつにまとめてしまえる」ことに自分で気づかないのは、動けばいいや的な思考停止か。
xmlns = {"excerpt":"http://wordpress.org/export/1.2/excerpt/",
"content":"http://purl.org/rss/1.0/modules/content/",
"wfw" :"http://wellformedweb.org/CommentAPI/",
"dc" :"http://purl.org/dc/elements/1.1/",
"wp" :"http://wordpress.org/export/1.2/"}
:
post_date = item.find("wp:post_date", xmlns).text
:
content = item.find("content:encoded", xmlns).text