はじめに
最近Pythonを始めた初学者です。現在スクレイピンを学習中ですが、Selenumを使う際に、エラーに遭遇したのでまとめます。
使用環境とバージョン
・Jupyter Lab
・Python 2.7.16
エラーの起こったタイミング
Seleniumのwebdriverをインストールし、Chromを立ち上げ立ち上げました。その後に、idを取得しようと、find_element_by_id()を使用した所、下記エラーをはきました。
selenium.find_element_by_id("value") NameError: name 'selenium' is not defined Exception ignored in: > Traceback (most recent call last):
原因と対策
調べてみると、Seleniumの最新バージョンのSelenium4から書き方が変わり、非推奨になったらしいです。
現在は...
書き方に関しては、
find_element(By.ID, "id-name")
と書くのが推奨されているようです。
またそれに加えてimpot文も合わせて入力する必要があります。
from selenium.webdriver.common.by import By
これを忘れてしまうと、エラーが出ます。
以下に他の書き方もまとめるので、エラーに当たった方は参考にしていただけると幸いです。
新しい書き方一覧
class指定
- 今までの書き方(class指定)
browser.find_element_by_class_name("class-name")
- 新しいの書き方(class指定)
browser.find_element(By.CLASS_NAME, "class-name")
name指定
- 今までの書き方(name指定)
browser.find_element_by_name("element_name")
- 新しいの書き方(name指定)
browser.find_element(By.NAME, "element_name")
cssセレクタ指定
- 今までの書き方(cssセレクタ指定)
browser.find_element_by_css_selector("element_css_selector")
- 新しいの書き方(cssセレクタ指定)
browser.find_element(By.CSS_SELECTOR, "element_css_selector")