===== 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()