幻魔ナイトブログ

主に絵、音楽、プログラミングなどについて書きます。

【Python】Seleniumを使ってTwitterを自動化してみる。

自分のブログがアップデートされた時にいい感じに整形しツイートしたかったのでSeleniumを使って自動化できないかと思い。調べてみました。 (API取得でもいいのですが大変そうだったので)

Seleniumとは?

ブラウザ自動化用のツールです。
自分が操作したいブラウザに対応するWebdriverを使用することで、多種のブラウザでの操作を共通のソースで自動化することができます。
詳しくは以下を参照のこと。 /ja/documentation/webdriver/

サポートされている言語はC#JavaPerlRubyPHPPythonと多種多様ですが、扱いやすさからPythonで実装していきます。

インストールしよう

インストールはとっても簡単です。Webdriverと使用する言語に対応するSleniumのインストールを行います。

WebDriverをインストールします。

今回はchromedriverを使用します。 Macの場合は以下

$ brew install chromedriver

もしも「No available fomula with name "chromedriver ~"」的なエラーが出たら以下のコマンドを実行します。少し調べた感じだとGUIMacにコマンドでインストールするための指定方法なそうです。

$ brew tap homebrew/cask
$ brew cask install chromedriver

Seleniumのインストール

今回はPythonでの実装を予定しているのでpipを使ってインストールします。

pip install selenium

ツイッターにログインしてみよう。

今回以下のようなソースを作ってみた。
アカウントとパスワードは適宜読み替えてください。

import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys

# アカウント情報
account = 'xxxxxxxx'
password = 'xxxxxxxxx'

# ツイートしたい文字列
text = "テストでござる"

# Twitterログイン実行する処理
def login_twitter():
    # ログインページを開く
    driver.get('https://twitter.com/login/')
    time.sleep(2)  # 待ち
    # account入力
    element_account = driver.find_element_by_name("session[username_or_email]")
    element_account.send_keys(account)
    time.sleep(2)  # 待ち
    # パスワードを入力する
    element_pass = driver.find_element_by_name("session[password]")
    element_pass.send_keys(password)
    time.sleep(3)  # 動作止める
    # ログインボタンクリック
    element_login = driver.find_element_by_xpath('//*[@data-testid="LoginForm_Login_Button"]')
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    element_login.click()
    time.sleep(3) # 待ち

# seleniumを起動
options=Options()
driver=webdriver.Chrome(chrome_options = options)

# ログイン処理
login_twitter()
time.sleep(10)

# ブラウザを閉じseleniumを終了
driver.close()
driver.quit()

ツイート方法までは漕ぎ着けることができなかったので今回はここまで。
今後更新予定です。

Seleniumを用いたツイート

追記としていましたが、所感なども書きたかったため別記事としました。
以下から参照可能です。

gemma-knight.sygenmaki.com

お問合わせはこちら