LoginSignup
2
1

More than 5 years have passed since last update.

Seleniumでログインが必要なシステムから複数ページを跨いでデータを採取する

Last updated at Posted at 2019-05-18

毎日特定の社内システムにログインしてデータを採取し、確認するのだが、
複数ページにまたいでのデータ採取であり面倒なため、スクレイピングで自動でデータ集めができないか実施した。
Seleniumでログインして、欲しいデータのタグからデータをリストにまとめる。

ライブラリをインポート

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait

ウェブブラウザがIEであるため、IEDriverServer.exeを同じ階層にダウンロード
階層が違う場合はアドレスを指定する。
入力する場所のidタグをdriver.find_element_by_idで探索し、send_keysでIDとPASSを入力して、click()にてログインする。

URL="ログインページのアドレス"
driver = webdriver.Ie('IEDriverServer.exe')
driver.get(URL)

ID=""
PASS=""

driver.find_element_by_id('IDを入力するスペースのid').send_keys(ID)
driver.find_element_by_id('passwordを入力するスペースのid').send_keys(PASS)
driver.find_element_by_id('loginボタンのid').click()

matome=[]
blank=""

driver.find_element_by_idで欲しいidのデータをスクレイピングできる
ここではページの遷移も伴うので、driver.getでページを移動する。
ページの読み込みを待たないとErrorになるので、WebDriverWaitでidが読み込めるまで待つ

ページその1
driver.get("ページその1のアドレス")

WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'data_1_id')))

data_1=driver.find_element_by_id("data_1_id").text
data_2=driver.find_element_by_id("data_2_id").text
data_3=driver.find_element_by_id("data_3_id").text
data_4=driver.find_element_by_id("data_4_id").text

for i in (data_1,data_2,data_3,data_4):
    matome.append(i)

ページ2
driver.get("ページ2のアドレス")

WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'data_5_id')))

data_5=driver.find_element_by_id("data_5_id").text
data_6=driver.find_element_by_id("data_6_id").text
data_7=driver.find_element_by_id("data_7_id").text

for i in (data_5,data_6,data_7):
    matome.append(i)   

for n in matome:
    print(n)

実際はこれがページ5つ分あるが、これ以降は同じものの繰り返し。
これで自動で複数ページのデータをまとめてくれる

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1