コード一覧

【Python】WordPressの記事を自動投稿する方法|【2020年度】

WordPressの投稿を自動化出来るか?

記事を投稿する際、自動で更新出来ないか?と考えて調べました。

更新したい箇所

・タイトル
・本文
・パーマリンク(URL)
・下書き保存
・公開日指定
・公開

タイトル、本文、下書き保存までは出来るようになりました。
結論としてコードは以下です。

コード

# coding: utf-8
# PythonでSeleniumのwebdriverモジュールをインポート
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
import time
import datetime


# ドライバーの選択
driver = webdriver.Chrome('C:/Users/xxxxxx/xxxxx/chromedriver_win32/chromedriver')
# ログインページを開く xxxxx.comは任意
driver.get('http://xxxxx.com/wp-login.php?')

# ログインIDを入力
id = driver.find_element_by_id("user_login")
id.send_keys("xxxxxxxx")

# ログインパスワードを入力
password = driver.find_element_by_id("user_pass")
password.send_keys("xxxxxxxx")

# ログインボタンををクリックする
loginbtn = driver.find_element_by_id('wp-submit')
loginbtn.click()

# 新規投稿画面へアクセス
driver.get('http://xxxxxxxx.com/wp-admin/post-new.php')

# タイトルを入力する
title = driver.find_element_by_id('title')
title.send_keys("xxxxxxxx")

# テキストタブをクリックする
text_tab = driver.find_element_by_id('content-html')
text_tab.click()

# 本文を入力する
body = driver.find_element_by_id('content')
body.send_keys("xxxxxxxx")

# 下書き保存をクリックする
save = driver.find_element_by_id('save-post')
save.click()

バージョン確認

WordPress 5.4
Python3

概要

ワードプレスを自動で更新出来ないものかと思い、調べたら、以下のAPIを発見しました。

画像引用元:https://wordpress.org/plugins/rest-api/

このAPIは、WordPress の投稿 API、メタデータ API 、ユーザー API などにアクセスする WP Query のシンプルなインターフェースです。もしあなたが WordPress で何かを始めたいのなら、この API がそれを可能にするでしょう。
引用元:https://ja.wp-api.org/

調べて、やってみましたが、うまくいきませんでした。
何が上手くいかなかったかもよくわからず、、、
設定も行い、 .htaccessも書き換え、色々調べましたが、無理でした。

そのため、seleniumを使って出来ないか?ということでやってみました。

苦戦したところ

苦戦したのは、投稿画面に、ビジュアル、テキスト、とあり、ビジュアルの方へ入力しようとしていましたが、xpathでも取得できず、cssでも取得できず、入力ができませんでした。そのため、投稿画面をビジュアルからテキストに変更したところ、うまく入力が出来ました。むしろ、今思うと、テキストの方が自由にいじれるので、便利かもしれません。

やってみたいこと

折角自動で投稿出来るようになったので何か出来ないかなと思い、調べてみました。

・各種APIで情報を取得して更新する
・スクレイピングで取得した情報を更新する
・ニュースを取得してアンテナサイトを作る
・エロ動画を集めて自動更新する
・任意のプレスリリースを集めて自動更新

技術的にはこのまま調べたら出来るのかもしれませんが、
著作権や許可やスクレピング禁止など面倒なことがたくさん出てきまして、「う~ん」となっています。取り急ぎ備忘録として。