Livedoorブログの記事更新をPythonとseleniumで自動化してみた。


皆さん、こんにちは。中川です。かなり久しぶりの投稿です。普段は会社でJavaを使った業務用のWebアプリケーションを作っていますが、一般生活ではPythonでスクレイピングをしていることが多いです。特にブログの自動更新やsnsなどの自動フォローなどにはまっています。そこで今回、Pythonとseleniumを使って簡単なブログ更新を行ってみました。

環境

Python 3.7.0
selenium 78

コード

qiita.py
from selenium import webdriver
from time import sleep
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException

class LivedoorAuto:
    def __init__(self):
        options = webdriver.ChromeOptions()
       #chrome://version プロフィールパスを参照
        options.add_argument("")
       #executable_pathには、chromedriverのパスを記入
        self.bot = webdriver.Chrome(executable_path="", chrome_options=options)

    def livedoor(self):
        bot = self.bot
        #ブログ投稿ページのurl
        bot.get("")

        wait = WebDriverWait(bot,60)
        entry_title = wait.until(expected_conditions.visibility_of_element_located((By.ID,"entry_title")))

        entry_title.send_keys("Hello")

        while True:
            try:
                entry_body = wait.until(expected_conditions.visibility_of_element_located((By.ID,"editor_1_f")))
                entry_body.send_keys("Hello Everyone")
                break
            except TimeoutException:
                print("timeout")
                continue

        sleep(2)
        bot.find_element_by_class_name("quickSocialMessage").send_keys("Hello")


ed = LivedoorAuto()
ed.livedoor()

タイトルをhello、記事内容にHello Everyoneという文字を記入するようなコードです。

最初にurlにアクセスする際に、ログインページに飛ばされますが、何度もログインを繰り返すとスパム扱いされることがあるため、最初からログイン情報をセッションに保持するようにしています。
seleniumで、ログイン情報を保持する方法は、以下のページに詳しく説明されています。
Seleniumで次の実行時にもサイトのログイン状態を維持したい場合

あまり難しくはないのですが、案外ネットでこのような情報が少なかったので、書いてみました。何かの参考になると幸いです。