Selenium(Python)でYahooJapanに自動ログインしてみる
ちょっと、自動ログインしてみたくなったので、試してみます。
開発環境
Windows10 Pro 21H1
Chrome
ChromeDriver 93.0.4577.15
Anaconda3 2021.05(64-bit)
selenium-3.141.0
SeleniumでChromeDriverを利用するための環境構築については「Windows10にAnacondaをインストールしてchromedriverを利用する(2021年9月版)」をご覧ください。
今回のseleniumのポイント
- driver.find_element_by_link_text(")
- driver.find_element_by_name(")
- driver.find_element_by_xpath('//button[normalize-space()=""]’)
Anaconda NavigatorからJupyterLabを起動
スタートボタン > Anaconda3(64-bit) > Anaconda navigator (anaconda3) をクリックして、Anaconda Navigatorを起動します。
なんか黒い画面が出ては消えるのを繰り返した後、以下の画面が出てくるので、 JupyterLab のところの「Launch」をクリックして、JupyterLabを起動します。
ブラウザが自動的に開いて、以下のような画面が出てきます。
この左側上の方にある、「フォルダ作成ボタン」
をクリックして、新規フォルダを作成します。今回は、「python」という名前に変更しました。
なお、上記のJupyterLabの左側の Documents/ フォルダですが、Windowsの 「ドキュメント」フォルダと同じ場所になります。
新規Notebook(Python3)を作成
画面左側の、先ほど作成した python フォルダをダブルクリックした後、画面左側の Notebook の Python3 をクリックして、新規Notebookを作成します。
Untitled.ipynb ファイルが作成されるので、画面左側で、Untitled.ipynb を右クリック > Rename をクリックして、名前を変更します。今回は、210920_001.ipynb に変更しておきます。
以下のようになりました。
なお、Chromedriverのインストールについては、 「Windows10にAnacondaをインストールしてchromedriverを利用する(2021年9月版)」をご覧ください。
YahooのIDを作成する
YahooIDを持っていない場合は、以下の「ID新規取得」から作成してください。
IDとパスワードを、メモ帳などにメモしておきます。
Chromeで、ログインのリンクのname属性を調べる
https://www.yahoo.co.jp/ をChromeで開き、適当な場所で右クリック > 検証 をクリックします。
以下のような画面になるので、右側の黒い画面左上の図の矢印のボタンをクリックした後に、左側の画面の「ログイン」をクリックします。
さらに、下図の「・・・」をクリックして、「Edit as HTML」をクリックします。
残念ながら、ログインの「name属性」はありませんでした。よって、他の方法でリンクをクリックするようにしようと思います。
結局、ログインのところのhtmlは、以下のようになっていました。
<a class="yMWCYupQNdgppL-NV6sMi _3sAlKGsIBCxTUbNi86oSjt" href="https://login.yahoo.co.jp/config/login?.src=www&.done=https://www.yahoo.co.jp/" data-ylk="rsec:personal;slk:login;pos:0" data-rapid_p="1">
<span class="fQMqQTGJTbIMxjQwZA2zk _3tGRl6x9iIWRiFTkKl3kcR">
ログイン
</span>
</a>
name属性がなかったので「ログイン」という名前で行く方針とする
driver.find_element_by_link_text('ログイン')
で行く方針としました。
JupyterLabに以下を入力して、Shift+Enter で実行し、ログイン画面までいってみます。
from selenium import webdriver
import time
driver = webdriver.Chrome() #WEBブラウザの起動
driver.get('https://www.yahoo.co.jp/')
# driver.set_window_size(1920,1080)
time.sleep(3)
button = driver.find_element_by_link_text('ログイン')
button.click()
time.sleep(3)
Chromeが自動的に開いて、以下のようにログインページまで行けました。
ログインIDはname属性を見つけてdriver.find_element_by_name() で指定する
トップページど同様に、右クリック > 検証 で、「ID/携帯電話番号/メールアドレス」のところのhtmlを見てみると、
<input type="text" name="login" id="username" value="" placeholder="ID/携帯電話番号/メールアドレス" spellcheck="false" data-rapid_p="1" class="">
のようになっています。「name属性」が login となっているので、jupyterlabのところで、以下のように入力します。
{それぞれのYahooID}のところは、それぞれの方の個人のYahooIDを入れてください。
mail = driver.find_element_by_name('login')
mail.clear()
mail.send_keys("{それぞれのYahooID}")
また、「次へ」ボタンのhtmlは上のように、 「name属性」が btnNext となっていますので、以下のようにJupyterLabに入力して、Shift+Enterで実行してみます。
button = driver.find_element_by_name('btnNext')
button.click()
すると、以下のような画面で止まってしまうので、また、右クリック > 検証 ・・・ で、パスワード入力画面のname属性を探すと、 passwd となっているのがわかります。
「name属性」が passwd となっているので、jupyterlabのところで、以下のように入力します。
{それぞれパスワード}のところは、それぞれの方の個人のYahooIDのパスワードを入力してください。
password = driver.find_element_by_name('passwd')
password.clear()
password.send_keys("{それぞれパスワード}")
「ログイン」ボタンはfind_element_by_xpath()で指定する
上の方と同様に、右クリック > 検証 > ・・・ で、ログイン ボタンのhtmlを調べると、
上記のようになっているので、以下のようにして、ログインボタンをクリックするようにします。
button = driver.find_element_by_xpath('//button[normalize-space()="ログイン"]')
button.click()
上記をまとめて、Shift + Enter でJupyterLabのコードを実行してみます。 {それぞれのYahooID}と{それぞれパスワード}のところは、それぞれの方の個人のYahooIDと、そのパスワードを入力してください。
from selenium import webdriver
import time
driver = webdriver.Chrome() #WEBブラウザの起動
driver.get('https://www.yahoo.co.jp/')
# driver.set_window_size(1920,1080)
time.sleep(3)
button = driver.find_element_by_link_text('ログイン')
button.click()
time.sleep(3)
mail = driver.find_element_by_name('login')
mail.clear()
mail.send_keys("{それぞれのYahooID}")
button = driver.find_element_by_name('btnNext')
button.click()
time.sleep(3)
password = driver.find_element_by_name('passwd')
password.clear()
password.send_keys("{それぞれパスワード}")
button = driver.find_element_by_xpath('//button[normalize-space()="ログイン"]')
button.click()
無事、ログインできたようです。
参考リンク
https://qiita.com/kinpira/items/383b0fbee6bf229ea03d
WEBスクレイピングのお勧めの本
2021年時点で、以下の2つの本がお勧めです。
とりあえず試してみたい場合は、上の本がお勧めです。
しっかりやりたい場合は、以下の本がお勧めです。
ディスカッション
コメント一覧
まだ、コメントがありません