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

WP REST APIなるものを知ったのでPythonを使って記事一覧を取得してみた。

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://取得したいブログのURL'
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"]}')

いざ実行、

2023-01-03T00:43:35, 2023-01-03T00:43:37,[Python]VisualStudioCodeでSeleniumのインテリセンスがでない
2023-01-02T14:56:57, 2023-01-02T14:56:58,VSCodeとPython3.10をインストールした(Windows10)
2023-01-02T13:44:30, 2023-01-02T15:44:11,[Python] Seleniumスクレイピングメモ

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

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

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

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

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

import requests

# ブログのURLを指定
blog_url = 'https:///取得したいブログのURL'
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}')
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次