プログラミングのお勉強の続き。
いきなり落とし穴のドツボにハマったpythonによるブラウザ自動化失敗問題であるが、とりあえず1か月以上経過してようやく解決の糸口にたどり着いた。
一般的なコードはこうなっている。
from selenium import webdriver
driver=webdriver.Chrome()
たったこれだけでChromeが起動するという(selenium と chromedriver をちゃんとインストールしている場合)。
と、どこにでも書いてあるし、YouTubeでもそう言っている人が多い。
俺もやってみたけど、実際にはselenium君が、chromedriver見つけられないよ、というメッセージが出てエラーとなる。
seleniumの公式ページには、これは昔から初心者にありがちな現象とのこと。
ここを突破しないと俺のやりたいことが実現できない。
あーだこーだ試してみたり、調べ上げてみたり、いろいろやってみたけど全然ダメでw
結局のところWeb上で次のような情報を得た。
・Windows環境だと、上記のコードではうまくいかない場合がある
・その場合、web driver managerというパッケージを別にダウンロードして、コードで「毎回chromedriverのちょうどエエやつ」を探し出してきてインストールせいや、という命令にする
とのことだったので、マネしてみたらあっさり動いた。
あああ~もう
この情報、実はちゃんと調べていればWeb上でもYouTubeでも出てくるんだけど、今まで見逃していた。デヘ
以下は、そのヒントとなったページのほぼ丸写しなんだけど、こうなります。
【正解:こうしたら動いた】
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()))
driver.get("表示したいWebページurl")
毎回最新のchromedriverをインストールするので時間がかかるんだけど、こうしておくとChrome本体がアップデートしても、勝手にちょうどエエドライバを入れてくれるんで、楽らしい。
それでちょっと気になったのはドライバのタイプで、公式ダウンロードサイトには64bit用と32bit用があって、俺のシステムは64bitだったので当然64にしたんだけど、
上記の方法でコードにお任せ状態にしたら、32bitのやつをインストールしてやがんの??
よくわかんねえ。
でもこれで動いているから良しとする。
深く考えないで次に行くよ。