seleniumでtwitterに自動的にログインしてみた(RPA,スクレイピング)

なぜseleniumでログインするのか?

まずはこの動画をご覧ください。
この動画ではseleniumで自動的にフォローをするのですが、 その前提として、フォローをするにはログインしておく必要があります。

seleniumではtwitterのpythonによる自動化をほぼなんでもできますが、そのためにはログインしておく必要があるのです

今回はそのログインをどのようにSeleniumで行うのか、を解説する回です。

seleniumにログインするpythonのコード

以下はソースです。
LOGIN_ACCOUNTNAMEは自分のアカウント名を
LOGIN_PASSWORDはパスワード名を
そして「'chromeDriverのパス'」はChromeDriver.exeのパスを指定してください

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.common.exceptions import StaleElementReferenceException
from bs4 import BeautifulSoup 
import string
import time
import numpy as np
import sys,os
sys.path.append(os.pardir)

#config
LOGIN_ACCOUNTNAME = ""
LOGIN_PASSWORD = ""
driver=webdriver.Chrome('chromeDriverのパス')


class TwitterDriver():
    def __init__(self, arg_driver):
        self.driver = arg_driver
        
    def login(self):
        url="https://twitter.com/login/error?username_or_email=%40"
        accountname=LOGIN_ACCOUNTNAME
        self.driver.get(url+accountname)
        time.sleep(1)
        
        password=LOGIN_PASSWORD
        element=self.driver.find_elements_by_xpath('//input[@autocapitalize="none"]')[1]
        element.send_keys(password)
        element.send_keys(Keys.ENTER)

    def close(self):
        self.driver.close()
        
    def scroll(self,amount):
        for _ in range(amount):
            time.sleep(1)
            try:
                self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
            except:
                print('エラー')
    
    def scroll_top(self):
        self.driver.execute_script("window.scrollTo(0, 0);")



if __name__ == "__main__":
    twitterDriver = TwitterDriver(driver)
    twitterDriver.login()

    
    

pythonコードの解説


自動的にログインできるurl

まず注目すべきは最初にログインするurl

url="https://twitter.com/login/error?username_or_email=%40"
accountname=LOGIN_ACCOUNTNAME
self.driver.get(url+accountname)

twitterにログインするためのurlは基本的に
https://twitter.com/login/error?username_or_email=%40"
にアカウント名を付け加える形式です。
それを、url+accountnameは表しています
self.driver.get(url+accountname)でログインしましょう

パスワードのxpath

次にパスワードの入力欄を指定して、エンターを押します。

password=LOGIN_PASSWORD
element=self.driver.find_elements_by_xpath('//input[@autocapitalize="none"]')[1]
element.send_keys(password)
element.send_keys(Keys.ENTER)


この
//input[@autocapitalize="none"][1]
はxpathと呼ばれるものです。
これは、「htmlの中で相対的にどこの位置に属するのか」を表しています。
つまり、「inputタグがついていてその中でもプロパティがautocapitalize="none"でその中の2番目の要素(配列は0からスタート)」である要素を指定しています
それが、入力ボタンという訳ですね。
この要素(element)にパスワードを入力します(element.send_keys(password))
パスワードを入力した後は、エンターを押すと自動的にログインします
なので
element.send_keys(Keys.ENTER)
でエンターキーを押しましょう!



〜結果〜

ちゃんと動けていますね

tags

selenium
twitter

popular page

プログラミング言語の学ぶ順番について(初心者から中級者へ)後編

Pythonで入門書が終わった後(中級者)に勧めたい技術3選

urllibとbeautifulSoupでtwitterのツイート数,フォロー数,フォロワー数,いいね数,を取得する

another page

ツイッターのいいねをpythonとseleniumで自動化してみた!(RPA)

ツイッターの自動的なフォローをpythonとseleniumで!(RPA)

寿司打を自動化する(python, selenium)

CONTACT ME RIGHT NOW!

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s.

5th Avenue, 987
38399, New York,
USA.

Tel. 9888-4394
Mail. hello@example.com
Skype. ExampleSkype

Your message has been sent. Thank you!

© Copyrights Studio. All Rights Reserved

Created with Studio template by TemplateMag
/* フッター/コピーライトのスタイル指定 */ footer { padding: 40px 16px; } footer .copyright small { color: #868686; font-size: 1.4rem; font-family: "Ubuntu Condensed", sans-serif; letter-spacing: .05em; }