Selenium + Python を使って、WordPressの全部の記事で特定の文字を置換するというのを自動化しました。
# coding:utf-8 import re from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.chrome.options import Options from selenium.common.exceptions import TimeoutException options = Options() options.binary_location = '/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary' options.add_argument('--headless') #driver = webdriver.Chrome(chrome_options=options) driver = webdriver.Chrome() driver.implicitly_wait(10) WAIT_TIME = 30 WORDPRESS_PATH = "https://【ドメイン】/wordpress" SERCH_KEYWORD = "【置換したい文字列】" SERCH_KEYWORD_AHTER = "【置換後の文字列】" def login(): url = WORDPRESS_PATH + "/wp-login.php" driver.get(url) WebDriverWait(driver, WAIT_TIME).until( EC.presence_of_element_located((By.ID, "user_login")) ) driver.find_element_by_id("user_login").send_keys("【ユーザーID】") driver.find_element_by_id("user_pass").send_keys("【パスワード】") driver.find_element_by_id("wp-submit").click() def main(): next() def next(): url = WORDPRESS_PATH + "/wp-admin/edit.php?s=" + SERCH_KEYWORD # 投稿一覧 driver.get(url) WebDriverWait(driver, WAIT_TIME).until( EC.presence_of_element_located((By.ID, "post-search-input")) ) next_href = "" try: WebDriverWait(driver, 0.1).until( EC.presence_of_element_located((By.CLASS_NAME, "next-page")) ) next_btn = driver.find_element_by_class_name("next-page") next_href = next_btn.get_attribute("href") except TimeoutException as ex: print("TimeoutException") # eles = driver.find_elements_by_class_name("next-page") # if len(eles) > 0: # next_btn = eles[0] # next_href = next_btn.get_attribute("href") eles = driver.find_elements_by_class_name("row-title") list = [] for ele in eles: href = ele.get_attribute("href") list.append(href) for href in list: update_contents(href) if next_href != "": print("next_href = " + next_href) next() def update_contents(url): print("url = " + url) driver.get(url) WebDriverWait(driver, WAIT_TIME).until( EC.presence_of_element_located((By.CLASS_NAME, "wp-editor-area")) ) textarea = driver.find_element_by_class_name("wp-editor-area") if textarea.text.find(SERCH_KEYWORD) > -1: txt = re.sub(SERCH_KEYWORD, SERCH_KEYWORD_AHTER, textarea.text) textarea.clear() textarea.send_keys(txt) driver.find_element_by_id("publish").click() WebDriverWait(driver, WAIT_TIME).until( EC.presence_of_element_located((By.ID, "message")) ) login() main() print("finish !!")