Python用モジュール「Selenium」でブラウザを操作する方法についてソースコード付きでまとめました。
【はじめに】Seleniumとは
Seleniumとは、Webブラウザの画面操作を自動化するものです。
簡単にいうとChromeやFirefoxなどのWebブラウザの操作をプログラムで自動化したりできます。
– | 主な用途 |
---|---|
1 | 作成したWebアプリをWebブラウザでテストするときの自動化 |
2 | Webスクレイピング |
【環境構築】Selenium、ドライバのインストール
①コマンドプロンプトを開きます。
②下記のコマンドを実行します。
pip install selenium
③seleniumのインストールは以上です。
ただし、seleniumを使うにはWebドライバも入手する必要があります。
続いて、Chrome版 WebDriverをインストールします。
①下記リンクを開きます。
https://sites.google.com/a/chromium.org/chromedriver/
②「Downloads」をクリックします。
※Supports Chromeの横にある数字をみて、お使いのChromeのバージョンが含まれているか確認する必要があります。
③お使いのPC環境にあったものをクリックしてダウンロードします。
※Windows環境なら「chromedriver_win32.zip」
④ZIPを解凍するとドライバを入手できます。
※Windows環境なら「chromedriver.exe」
– | 詳細記事 |
---|---|
1 | ■【Python】Seleniumのインストール |
2 | ■【WebDriver】Chrome, Firefox版のインストール |
【基本操作】URLを開く(待機時間、プロキシ設定)
Python用モジュール「Selenium」を用いて、ブラウザを操作しURLを開きます。
※今回はグーグル検索のトップページを開いてみます。
■Chromeで開く場合
# -*- coding:utf-8 -*- from selenium import webdriver # Chromeで操作する場合 driver = webdriver.Chrome() driver = webdriver.Chrome(executable_path='chromedriver') driver.get('https://www.google.co.jp/')
■Firefoxで開く場合
# -*- coding:utf-8 -*- from selenium import webdriver # Firefoxで操作する場合 driver = webdriver.Firefox() driver = webdriver.Firefox(executable_path='geckodriver') driver.get('https://www.google.co.jp/')
– | 詳細記事 |
---|---|
1 | ■【Python/Selenium】ブラウザでURLを開く |
ページのスクリプトが実行完了するまで待機してからURLを開いてみます。
# -*- coding:utf-8 -*- from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC url 'https://www.yahoo.co.jp/' delay_time = 5 driver.get(url) expected_element = expected_conditions.presence_of_element_located((By.ID, "myElement")) element = WebDriverWait(driver, delay_time).until(expected_element)
– | 詳細記事 |
---|---|
1 | ■【Python/Selenium】ページのスクリプトが実行完了するまで待機 |
上記のプログラムでは、操作対象のID(myElement)が見つかるまで待機し続けることができます。
待機時間の最大は10秒です。
最近はスクリプトの実行が完了するまで要素が表示されないページが多いです。
そういったページを自動で操作する場合によく使います。
プロキシを使ってWebページにアクセスすることもできます。
所謂「串を刺す」というやつです。
# -*- coding:utf-8 -*- from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.options import Options url 'https://www.yahoo.co.jp/' # プロキシの設定 PROXY = '{proxy-server}:{port}' # サーバーとポート PROXY_AUTH = '{userid}:{password}' # IDとパスワード # オプション option = Options() option.add_argument('--proxy-server=http://%s' % PROXY) option.add_argument('--proxy-auth=%s' % PROXY_AUTH) # Chromeで操作する場合 driver = webdriver.Chrome() driver = webdriver.Chrome(executable_path='chromedriver', chrome_options=option) # ページをロード driver.get(url)
– | 詳細記事 |
---|---|
1 | ■【Python/Selenium】プロキシを使ってWebページにアクセス |
【スクレイピング】要素取得、キーワード検索
id属性、class属性を指定して要素を取得することができます。
# -*- coding:utf-8 -*- from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.options import Options url = 'https://python.joho.info/' # Chromeで操作する場合 driver = webdriver.Chrome() driver = webdriver.Chrome(executable_path='chromedriver') # ページをロード driver.get(url) # ID名:custom_html-2 の要素を取得 tag_id = driver.find_element_by_id('custom_html-2') # class名:entry-title entry-title-link の要素を取得 tags_class = driver.find_elements_by_class_name('class-name') print('Tag ID:', tag_id.text) # Twitter/Youtube
– | 詳細記事 |
---|---|
1 | ■【Python/Selenium】id属性、class属性を指定して要素を取得 |
ブラウザを操作しDuckDuckGoで自動的にキーワード検索を行ってみます。
# -*- coding:utf-8 -*- from selenium.webdriver.common.keys import Keys from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains # 検索エンジンのURL:duckduckgo url = 'https://duckduckgo.com/' # Chromeで操作する場合 driver = webdriver.Chrome() driver = webdriver.Chrome(executable_path='chromedriver') driver.get(url) # 検索ワード入力欄の要素をid名から取得 search_text_element = driver.find_element_by_xpath("//*[@id='search_form_input_homepage']") # 検索ボタンの要素をid名から取得 search_button_element = driver.find_element_by_xpath("//*[@id='search_button_homepage']") # 操作 actionChains = ActionChains(driver) # 検索ワード「沖田オルタ」で検索 actionChains.send_keys_to_element(search_text_element, "沖田オルタ").click(search_button_element).perform()
– | 関連記事 |
---|---|
1 | ■【Python/Selenium】DuckDuckGoで自動的にキーワード検索 |
2 | ■【Python/Selenium】ブラウザ操作入門 ■【Python】Webスクレイピング入門 ■Python入門 基本文法 ■【Python】ネットワークプログラミング入門 |
コメント