LoginSignup
8
11

More than 5 years have passed since last update.

Python Seleniumでtwitterのログインからリプライするbot

Posted at

はじめに

Python Seleniumでログインから特定の投稿に対して自動リプライするbotを作りました。TwitterAPI無しでログインからリプライまで一連の動作です。
投稿のURLの取得も自動で行えば、完全に自動で返答するbotになります。
意外と日本語のドキュメント無かったのでこちらに記載しました。

※あまり頻度多いと、twitterからスパム判定食らう可能性が高いので、用法・用量を気をつけて使いましょう。
参考:Twitterでスパムに引っかからない対策と判定されないための予備知識 | スタートアップSNS

環境

Python3.x
Mac OS Mojave
Google Chrome
Chrome Chrome Web Driver

コード

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

# 各種設定
# twitterアカウント
account = 'xxxxxxxxxxxx@xxxxxxxxx'
password = 'xxxxxxxx'
# 返答したい投稿のURL
tweet_url = "https://twitter.com/xxxxxxxx/status/xxxxxxxxxxxxxxxxx"
# 返答したいテキスト
reply_text = '''こんにちは〜!'''

# Twitterログイン実行する処理
def twitterlogin():
    # ログインページを開く
    driver.get('https://twitter.com/login/')
    time.sleep(3)  # 動作止める
    # accountを入力する
    element_account = driver.find_element_by_class_name("js-username-field")
    element_account.send_keys(account)
    time.sleep(3)  # 動作止める
    # パスワードを入力する
    element_pass = driver.find_element_by_class_name("js-password-field")
    element_pass.send_keys(password)
    time.sleep(3)  # 動作止める
    # ログインボタンをクリックする
    element_login = driver.find_element_by_xpath('//*[@id="page-container"]/div/div[1]/form/div[2]/button')
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    element_login.click()
    time.sleep(3)  # 動作止める

# Tweetリプライ実行する処理
def tweetreply(URL):
    # ツイートIDを取得する
    tweetID = URL[-19:]
    driver.get(URL)
    try:
        # 投稿文を挿入
        driver.find_element_by_id("tweet-box-reply-to-" + tweetID).click()
        time.sleep(3)  # 動作止める
        driver.find_element_by_id("tweet-box-reply-to-" + tweetID).click()
        time.sleep(3)  # 動作止める
        driver.find_element_by_id("tweet-box-reply-to-" + tweetID).send_keys(reply_text)
        time.sleep(3)  # 動作止める
        driver.find_element_by_id("tweet-box-reply-to-" + tweetID).send_keys(Keys.CONTROL + "\n")
    except:
        print("Error")


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

# Twitterログイン処理
twitterlogin()
# Tweetリプライ処理
tweetreply(tweet_url)

# seleniumを終了
driver.close()
driver.quit()
8
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
11