PythonでSeleniumを使ってスクレイピング (基礎)
スクレイピングを勉強しようと思い立って、Selenium を使ってでブラウザを操作してみたので、軽くまとめておこうと思います。
使用したもの
-
Selenium
- 自動でブラウザを操作する為のライブラリ
- Chrome
- ブラウザ
ブラウザに合わせたドライバーを用意する
- 自動でブラウザを操作する為のライブラリ
- ブラウザ
ブラウザを操作するには、各ブラウザに合わせてドライバーを用意する必要があります。
今回は Chrome を使用するので 公式サイトから ChromeDriver をダウンロードします。
Selenium をインストール
pip で selenium を インストール
pip install selenium
webページを開いてみる
ブラウザを開く
webdriver.Chrome(driver_path)
webページを開く
driver.get(URL)
webページを閉じる
driver.close()
ブラウザを終了 (全てのウィンドウを閉じる)
driver.quit()
from selenium import webdriver
driver = webdriver.Chrome(driver_path)
driver.get(URL)
driver.close()
driver.quit()
要素にアクセスしてみる
HTMLの要素にアクセスする為に id、class、name 等から要素を指定して取得する事ができます。
id で取得
driver.find_element_by_id('ID')
class で取得
driver.find_element_by_class_name('CLASS_NAME')
name で取得
driver.find_element_by_name('NAME')
link textで取得
driver.find_elements_by_link_text('LINK_TEXT')
ネストされた要素は path を指定して取得
driver.find_elements_by_xpath(".//a")
アクション
取得した要素に対して、アクションを起こす事でwebページを操作します。
ボタンをクリックする
driver.find_element_by_id('Btn').click()
Form に文字を入力する
driver.find_element_by_name('From').send_keys("text")
待機する
よくあるのが、画面のロードが完了する前に、処理が走ってしまいエラーになる。
これに対処する為に必要な要素が準備できるまで、数秒待機する事ができます。
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
WebDriverWait(driver, WAIT_SECOND).until(EC.presence_of_element_located((By.CLASS_NAME, 'Btn')))
ブラウザの操作
では上記をふまえて軽く操作してみます。
ボタンをクリックしてみる
例えば、某サイトの購入ボタンを押したい場合
from selenium import webdriver
driver = webdriver.Chrome(driver_path)
driver.get(URL)
driver.find_element_by_class_name('new_addToCart').click()
driver.quit()
こんな感じで find_element_by_class_name() で要素を取得して click() でクリックアクションを起こします。
テキスト入力してみる
検索ボックスに検索キーワードを入力して、検索ボタンを押してみます。
from selenium import webdriver
driver = webdriver.Chrome(driver_path)
driver.get(URL)
driver.find_element_by_id('searchWords').send_keys("search text")
driver.find_element_by_id('searchBtn').click()
これで検索ボックスに自動で "search text" が入力され検索されます。
まとめ
ボタンを押したり、テキスト入力をしたりの基本動作を覚えると、だいたいの操作が簡単に出来る印象です。
やはり、ブラウザ操作をプログラムで行う事で、並列処理が出来る事の恩恵は大きいですね。
ただ、ブラウザをたくさん立ち上げると PC がめちゃくちゃ重くなるので、そこは気をつけないといけませんね。
Author And Source
この問題について(PythonでSeleniumを使ってスクレイピング (基礎)), 我々は、より多くの情報をここで見つけました https://qiita.com/kinpira/items/383b0fbee6bf229ea03d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .