パーソンリンク アドベントカレンダー22日目です!🎉
今日は冬至です。ここから、日照時間が少しづつ長くなってきますね!
セレニウムとは
初めて聞いたときは、元素番号がだいぶ最後の方の元素の話かと思いましたが、
webを自動で動かせるツールの一つで、
テストを自動化したり、繰り返し行われるweb上での作業を自動化したりすることが出来ます。
Pythonのライブラリになりますので、Seleniumのインストール等はpipコマンドなどを使って実行します。
(初期設定に関する情報はたくさんありますので、ググってみてください。
環境
Mac(10.14.6 Mojave)
Python(2.7.10)
Google Chrome
注意点
ブラウザを操作するためにはwebdriverが必要になります。
Chromeのバージョンに合わせてドライバーが必要なので注意してください。
基礎的な構文
任意のURLへのアクセス
// Seleniumでwebdriverを使えるようにする
from selenium import webdriver
fromselenium.webdriver.common.keys import Keys
// 任意のサイトなどにアクセス
// オプションなどの設定も必要ならここで
driver = webdriver.Chrome()
driver.get("https://~~~~~~~~")
要素の取得方法
要素は、HTMLのidやname,classなど様々な指定方法によって取得することができます。
今回はXPathでの取得で説明をします。
任意のページを開き、右クリック→検証へ進むと画面のどこかにデベロッパーツールが出現します。
その中から任意の要素のHTMLタグを探し出し(ツール左上のスマホモードアイコンの左にあるアイコンで任意の要素をクリックすると該当のものが表示されます)
右クリックでコピー→XPathをコピーとすると要素の取得ができます。
例として、弊社パーソンリンクの会社ページからヘッダーにあるCOMPANYのタグ要素をしてみると...
//[@id="app"]/div[2]/div/div/div/div[2]/a[1]a*
このようになります。
例えばこれをクリックする様にして、自動でページが進む様になどですね!
要素の取得と文字の入力やクリック
// aタグ要素の取得
company_link = driver.find_element_by_xpath('//*[@id="app"]/div[2]/div/div/div/div[2]/a[1]a')
// 要素のクリック
company_link.click()
// fromタグ要素の取得
form = driver.find_element_by_xpath('//*[@id="form"]')
// form要素に任意の文字の入力
form.send_keys("personlink")
// form要素に入っている文字のクリア
form.clear()
待ち時間の設定
Seleniumに限らずスクレイピング等を行う際には、
ページのロード時間を考慮しなければなりません。待ち時間を用意してあげるというイメージですね。
これがないと、指定した要素がないよとエラーになってしまいます。
driver.implicitly_wait(10)
他にも方法はあるみたいですが、基本的な待ち時間の設定はこの様にします。
implicitly_wait(ここに待ち秒数)を使うと、設定した待ち秒数まで待ちますが、ページのロードが完了していると最後まで待たずに次の処理を進めてくれます。
設定すればするだけ時間が伸びてしまわないというのが良い感じですね!
かなり基礎的な内容までになりますが、以上になります。
最後までご拝読いただき、ありがとうございました。