Python

【WordPressAPI】サイトのURLとページタイトル全取得

記事内に商品プロモーションを含む場合があります

こんにちは、hokkyokunです。

自分のサイトにおいて、
A8ネット経由の広告を張り付けているページを全て記載し、提出する必要があります。
詳しくは別記事で書きます。

この問題を解決するためにPythonを使ってツールを作成します。

  1. wordPress APIを叩いて自分のサイトのURLを全取得
  2. ①で得たURLリストを全部スクレイピング
    自分のサイトだから当然著作権は心配ない
  3. 特定のアンカータグを見つけてリスト化
    ⇒広告を取得して記事毎にリスト化する
  4. A8ネットの広告IDと紐づけて提出
    ここは手動

今回は①のWordPress APIを叩いて自分のサイトの全URLを取得します。

Pythonコード

早速ですが、
サイトの全URLを取得するコードです。
URLだけだとどの記事かピンとこないのでIDとページタイトルも一緒に取得します。

import requests
import time
def fetch_posts_data(base_url, endpoint='/wp-json/wp/v2/posts', per_page=10):
    """ 
    WordPress REST APIを使用して投稿のURL、タイトル、IDを取得し、
    それらをPandas DataFrameにして返す。
    """
    posts_data = []
    page = 1
    while True:
        time.sleep(1)
        response = requests.get(f"{base_url}{endpoint}?per_page={per_page}&page={page}")
        if response.status_code != 200:
            break
        data = response.json()
        if not data:
            break
        for post in data:
            post_info = {
                'id': post['id'],
                'title': post['title']['rendered'],
                'url': post['link']
            }
            posts_data.append(post_info)
        
        print(page)
        print(posts_data)
        page += 1
    return pd.DataFrame(posts_data)

自分のサイトで試してみます

さっそく自分のサイトのURLを取得してみます。

#SITE_NAMEはご自身のドメインを入れてください
# 「なんとか.com」のことです。
df=fetch_posts_data(SITE_NAME)
print(df)

サイトURLが取得できました。
IDは念のため伏せておきますが、ちゃんと取得出来ています。

【注意】人様のサイトに迷惑をかけてはいけない

今回のコードは特にキーを必要としていません。
(APIを使用するためにはキーの発行が必須の場合もあります)

サイトのURLはパブリックな情報という位置づけなのでしょう。

やろうと思えばどのウェブサイトでも試すことができます。
(ブロックする措置をとっていない場合)

ただし、リクエストを送るということは
サーバーに少なからず負担をかけることになります。

誰か他人のサイトに過剰な負荷をかけることはマナー違反です。
最悪、訴えられる可能性もあります。

節度を持って自己責任で行ってください。
個人的には人様のサイトに試すのはおすすめしません。

Pythonができるのは大きい

何はともあれ、ちょこっとプログラミングができるようになるだけで
可能性は広がります。

今回のA8さんの仕様変更でも
誰かが何とかしてくれる」ではなく、
プログラムでなんとかなるか」という思考になれるのは大きいです。

そして、プログラミング学習は独学でも学ぶことができますが、
時間が多くかかることも事実です。

書籍や動画、プログラミングスクールなど有料コンテンツもたくさんあります。

お勧めは動画コンテンツでの学習です。
プログラミングは書籍だとPCの操作などでわかりにくいところもありますので
連続性のあるコンテンツの方が学習効率が高いです。

動画コンテンツはUdemy一択です。
Udemyの公式サイトはこちらです。

また、質問や相談できる環境を作ると学習効率や質はさらに上がります。
特に独学だと知識の範囲が偏りがちなので、知らないばかりに複雑なコードを書いてしまうことがよくあるので、聞ける環境を作るのはおすすめです。

SAMURAI TERAKOYAは
月額2980円で質問ができる環境を作ることができます。

関連リンク

楽天API

ワードプレス自動化