WP REST APIなるものを知ったのでPythonを使って記事一覧を取得してみた。
Pythonをこの機会に使ってみたい!という人はこちらをどうぞ、
VSCodeとPython3.10をインストールした(Windows10)
いつのまにかPythonが3.10になっていたのでインストールする回。ついでにVSCodeのインストールとか設定を残しておこうという魂胆。 Python3.10のインストール STEPPytho…
目次
実験環境(バージョン情報)
Python: 3.8.7
WordPress: 6.0
最新記事一覧を取得してみる
PythonからPosts API にリクエストを投げてみた。
「ブログのURL/wp-json/wp/v2/posts」で最新記事の一覧がJSON形式で取得できる。
リクエストのURLや取得したJSONのフォーマットについてはこちらでいろいろ書いてます
WP REST APIで記事データを取得してみた[WordPress]
WordPressにはHTTPリスエストを送信するとブログの情報が取得できるRESTAPIなるものがあるらしいのでためしてみる。調べてみるとブログのURLの後ろにいろいろパラメータ…
こんなコードで実行してみた。
ためすときは「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}')
コメント