Python Selenium スクレイピング プログラミング 自動化

【2021年版】Python+Seleniumでツイッターに自動でログインしてツイートする

この記事は約5分で読めます。

 

こんにちは、ミナピピン(@python_mllover)です

 

久しぶりにTwitterに自動ログインする必要があったので昔に書いたコードを実行したところ案の定HTML要素が変わっていてエラーを吐いたので2021年版として書き直しました。

 

なにか質問等あれば、MENTA Twitterにてご相談ください。

 

# ライブラリの読み込み
import time
import subprocess
from selenium import webdriver
from selenium.webdriver.support.ui import Select
from webdriver_manager.chrome import ChromeDriverManager 
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
import chromedriver_binary 

cmd = 'pip install --upgrade chromedriver_binary' 
res = subprocess.call(cmd, shell=True)
chrome_options = webdriver.ChromeOptions()
prefs = {"profile.default_content_setting_values.notifications" : 2}
chrome_options.add_experimental_option("prefs",prefs)
# chrome_options.add_argument('--headless')
drv = webdriver.Chrome(ChromeDriverManager().install(), chrome_options=chrome_options)

# ツイッターに自動投稿する関数
def auto_tweet(id, password, tweet):
    """[twitterに自動投稿するスクリプト]
    id : str
    自分のツイッターのID
    password : str
    自分のツイッターのパスワード
    tweet : str
    投稿したいツイート
    """

    global drv
    
    drv.get('https://twitter.com/login/')
    time.sleep(10)
    drv.find_element_by_xpath(
    '/html/body/div/div/div/div[1]/div[2]/div/div/div/div/div/div[2]/div[2]/div/div/div[2]/div[2]/div[1]/div/div[5]/label/div/div[2]/div/input')\
    .send_keys(id)
    

    time.sleep(2)
    drv.find_element_by_xpath('/html/body/div/div/div/div[1]/div[2]/div/div/div/div/div/div[2]/div[2]/div/div/div[2]/div[2]/div[1]/div/div[6]/div')\
    .click()
    
    time.sleep(2)
    
    drv.find_element_by_xpath(
    '/html/body/div/div/div/div[1]/div[2]/div/div/div/div/div/div[2]/div[2]/div/div/div[2]/div[2]/div[1]/div/div[3]/div/label/div/div[2]/div[1]/input')\
    .send_keys(password)

    time.sleep(2)

    drv.find_element_by_xpath(
    '/html/body/div/div/div/div[1]/div[2]/div/div/div/div/div/div[2]/div[2]/div/div/div[2]/div[2]/div[2]/div/div/div').click()
    
    time.sleep(2)

    drv.get('https://twitter.com/compose/tweet')

    time.sleep(4)

    drv.find_element_by_css_selector(
    '.notranslate.public-DraftEditor-content').send_keys(tweet)
    time.sleep(3)
    drv.find_element_by_xpath(
    '/html/body/div/div/div/div[1]/div[2]/div/div/div/div/div/div[2]/div[2]/div/div[3]/div/div/div/div[1]/div/div/div/div/div[2]/div[3]/div/div/div[2]/div[4]/div/span/span').click()

    drv.quit()


# ツイートを投稿する例
auto_tweet('@xxxxxx', 'hogehoge', 'helloworld selenium2021')

 

 

 

コメント

タイトルとURLをコピーしました