#はじめに
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()