目次

Seleniumを使用したスクレイピング

ブラウザ起動

webdriverを使用してブラウザを起動し、ターゲットとするURLを開きます。
以下の例ではChromeを起動しています。他のブラウザを使用する場合は、webdriverから対象ブラウザの起動メソッドを探してください。

from selenium import webdriver
 
# Chrome起動
browser = webdriver.Chrome('ドライバのパス')
browser.get('ターゲットURL')
 
# ~~~ 解析処理 ~~~
 
# Chrome終了
browser.quit()

※環境変数を設定してある場合は'ドライバのパス'は不要です。

HTMLから値取得

ID属性指定

webdriverのfind_element_by_id()を使用します。

browser = webdriver.Chrome()
# ~~~ 省略 ~~~
 
element = browser.find_element_by_id('ID属性名')
print(element.text)

タグ指定

単一要素取得

webdriverのfind_element_by_tag_name()を使用します。

browser = webdriver.Chrome()
# ~~~ 省略 ~~~
 
element = browser.find_element_by_tag_name('タグ名')
print(element.text)
全要素取得

webdriverのfind_elements_by_tag_name()を使用します。
リスト型で返却されるので、for文等で処理を加えます。

browser = webdriver.Chrome()
# ~~~ 省略 ~~~
 
elements = browser.find_elements_by_tag_name('タグ名')
for i in elements:
    print(i.text)

HTMLから画像取得

SRC属性から取得

import io
from urllib import request
 
# ~~~ 省略 ~~~
 
element = browser.find_element_by_tag_name('img')
url = element.get_attribute('src')
in_data = io.BytesIO(request.urlopen(url).read())
img = Image.open(in_data)
img.save(保存ファイル名)

ブラウザの操作

テキスト入力

WebElementのsend_keys()を使用します。

browser = webdriver.Chrome()
# ~~~ 省略 ~~~
 
element = browser.find_element_by_id('ID属性名')
element.send_keys('文字列入力')

ボタン押下

WebElementのclick()を使用します。

browser = webdriver.Chrome()
# ~~~ 省略 ~~~
 
element = browser.find_element_by_id('ID属性名')
element.click()