WP REST APIなるものを知ったのでPythonを使って記事一覧を取得してみた。
と言ってもまだこのブログはこれを書いてる時点で記事が2つしかないけれども・・・
Pythonをこの機会に使ってみたい!という人はこちらをどうぞ、
あわせて読みたい


VSCodeとPython3.10をインストールした(Windows10)
いつのまにかPythonが3.10になっていたのでインストールする回。ついでにVSCodeのインストールとか設定を残しておこうという魂胆。 【Python3.10のインストール】 STEPP…
本日の実験内容(目次)
実験環境(バージョン情報)
Python: 3.8.7
WordPress: 6.0
最新記事一覧を取得してみる
PythonからPosts API にリクエストを投げてみた。
「ブログのURL/wp-json/wp/v2/posts」で最新記事の一覧がJSON形式で取得できる。
リクエストのURLや取得したJSONのフォーマットについてはこちらでいろいろ書いてます。
あわせて読みたい


WP REST APIを使って記事データを取得してみた
WordPressにはHTTPリスエストを送信するとブログの情報が取得できるRESTAPIなるものがあるらしいのでためしてみる。ブログのURLの後ろにいろいろパラメータを付ければい…
こんなコードで実行してみた。
ためすときは「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でも記事一覧が取得できた!
記事を自動で投稿してみた回はこちら、
あわせて読みたい


WordPressの記事をPythonを使って自動投稿してみる
ワードプレスのWP REST APIを使って記事を自動で投稿したり、更新したりしてみる回。今回はPythonを使ってPostリクエストを投げてみる。記事一覧を取得してみた回はこち…
コメント