Pythonを使ってWordPressの記事一覧を取得してみる(WP REST API)

wp_rest_api+python

WP REST APIなるものを知ったのでPythonを使って記事一覧を取得してみた。
と言ってもまだこのブログはこれを書いてる時点で記事が2つしかないけれども・・・

Pythonをこの機会に使ってみたい!という人はこちらをどうぞ、

本日の実験内容(目次)
(スポンサーリンク)

実験環境(バージョン情報)

Python: 3.8.7
WordPress: 6.0

最新記事一覧を取得してみる

PythonからPosts API にリクエストを投げてみた。
「ブログのURL/wp-json/wp/v2/posts」で最新記事の一覧がJSON形式で取得できる。

リクエストのURLや取得したJSONのフォーマットについてはこちらでいろいろ書いてます。

こんなコードで実行してみた。
ためすときは「blog_url」を自分のブログのURLに置き換えてください。
とりあえず取得する項目を「_fields」でdate、modifiedとtitleだけに絞った。
「response」はlistで記事情報が入っているのでforでぐるぐる。

import requests

# ブログのURLを指定
blog_url = 'https://labo.yaspage.com'
url = f'{blog_url}/wp-json/wp/v2/posts?_fields=date,modified,title'

# リクエスト送信してレスポンスのJSONを解析
response = requests.get(url).json()

# レスポンスをぐるぐる
for data in response:
    # 公開日、更新日、タイトルを表示
    print(f'{data["date"]}, {data["modified"]},{data["title"]["rendered"]}')

いざ実行、

2022-06-04T15:54:00, 2022-06-05T14:56:19,WP REST APIを使って記事データを取得してみた
2022-06-03T15:47:26, 2022-06-03T16:47:10,エックスサーバーのWordPressのDBに外部から接続してみる

ちゃんと公開日、更新日、タイトルがとれてる!

アイキャッチ画像のURLも取得してみる

_embed」を付けて実行。_fieldsの併用はできないみたい?
取得した画像のurlを使ってrequests.getでダウンロードとかもできるはず。

画像のurlまではけっこう階層が深いのでちょっとたいへん。
「_embedded」の中に情報が入っている。「wp:featuredmedia」がlistだけど0個とか2個以上の時とかあるのか不明

「wp:featuredmedia」の項目の詳細はMedia API Referenceのスキーマを見てください。

import requests

# ブログのURLを指定
blog_url = 'https://labo.yaspage.com'
url = f'{blog_url}/wp-json/wp/v2/posts?_embed'

# リクエスト送信してレスポンスのJSONを解析
response = requests.get(url).json()

# レスポンスをぐるぐる
for data in response:
    # アイキャッチ画像のURLを取り出す
    image_src = data["_embedded"]["wp:featuredmedia"][0]["source_url"]

    # 公開日、更新日、タイトル、アイキャッチ画像のURLを表示
    print(f'{data["date"]}, {data["modified"]},{data["title"]["rendered"]}, {image_src}')

まとめ

Pythonでも記事一覧が取得できた!
記事を自動で投稿してみた回はこちら、

wp_rest_api+python

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

本日の実験内容(目次)