なぜ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)
でエンターキーを押しましょう!
〜結果〜
ちゃんと動けていますね