課題
JupyterLabでスクレイピングを行おうとしたら
AttributeError: 'WebDriver' object has no attribute 'find_element_by_id'
とのこと。
仮説
・タイプミス
・取得しようとしてる場所がおかしい
原因
結局仮説は外れており、ぐぐったらすぐ出てきた。
seleniumのバージョン4以上から、find_element_by_xxxのメソッドが使えないみたい。
以下コマンドでバージョンを確認してみると...
pip list
解決策
・seleniumバージョンのバージョン下げる
・4.3.0の書き方で記述
バージョン変えるの面倒だから4.3.0用の書き方でやってみる。
finf_element_by_name 旧バージョン
find_element(By.ID, "xxx") 新バージョン
ただ、これでもNameErrorが出てしまい、どうしたものかと思っていたら、
Byをimportしなければいけないようだったので、こちらも忘れずに!!
from selenium.webdriver.common.by import By
これで無事動きました。
学び
・バージョンによって書き方変わることがある
・仮説を立ててから課題解決に向かう(ぐぐる)と早い
・今回は仮説全然違ったけど、違うってことがわかるだけでまぁよかったかな
・仮説の精度はこういう経験の蓄積だと思われる
・当たり前なんだけど、そもそも吐き出されたエラー内容を正しく理解する