Pythonでrequestsを使用しWordPress APIから最新の投稿を取得してみます。
全てのWordPressを利用しているWebサイトには、さまざまな種類の情報を収集するためのJSON APIが存在していますので、このAPIを利用し、最新の投稿を取得します。
なお、今回はrequestsモジュールを使用しますので、Pythonに事前にインストールしておく必要があります。
※注意※このアプローチを使用し、悪用しないでください。Webスクレイピングは通常は問題ありませんが、誰かのWebサーバーにリクエストをスパム送信しないでください。
■Python
Google Colaboratory(Google Colab),Python3.7.10
■requestsを使用しWordPress APIから最新の投稿を取得する
では、早速requestsを使用しWordPress APIから最新の投稿を取得するスクリプトを書いていきます。
■コード
import requests import json req = requests.get('https://***.***(WordPressサイト)/wp-json/wp/v2/posts') data = json.loads(req.content) enc = json.dumps(data, indent=2, ensure_ascii=False) print(enc)
importでrequestsモジュールとjsonモジュールを呼び出します。jsonモジュールは、Python標準ライブラリ。その後、reqという変数を定義し、その中でrequests.get()関数を用います。 関数の括弧内には、引数,パラメータとして、Webサイトのデータを取得するために、URLを渡します。今回は当サイト(https://laboratory.kazuuu.net/)を指定します。この際にURLの末尾に「/wp-json/wp/v2/posts」を付けることで、最新の投稿を取得することができます。
取得後、data変数を定義し、json.loads()関数を用い、括弧内に引数,パラメータとしてreq.content(取得したデータ(コンテンツ))を渡し、JSON文字列を辞書型に変換します。
変換後、enc変数を定義し、json.dumps()関数を用い、括弧内に引数,パラメータとしてdata変数を渡し、辞書をJSON文字列として整形して出力します。この際に、第2引数,パラメータで、インデント幅を「2」とします。さらに第3引数,パラメータで「ensure_ascii=False」とし、Unicodeエスケープされず、日本語の文字を出力させるようにします。この設定を行わないと、Unicode文字列が出力されてしまい、文字化けが発生してしまうことを防ぐ。
整形後、print()関数でenc変数内の情報を出力します。
■実行・検証
スクリプトを作成後、このスクリプトを実行してみます。
実行してみると、requestsモジュールを用いたことで、requestsを使用しWordPress APIから最新の投稿を取得し、JSON形式で投稿(コンテンツ)を出力させることができました。
コメント