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