- ベストアンサー
PythonでWebから情報収集
以下はpythonでwebdriverを使ってwebページを順次巡り、開閉するサンプルプログラムです。ある専門図書から抜粋したものです。 from selenium import webdriver import time # chromedriver.exeがある場所 driver_path = "driver/chromedriver.exe" # WebDriverの作成 driver = webdriver.Chrome(executable_path=driver_path) # www.google.co.jpを開く driver.get("https://www.google.co.jp") print(driver.title, driver.current_url) time.sleep(2) # www.yahoo.co.jpを開く driver.get("https://www.yahoo.co.jp") print(driver.title, driver.current_url) time.sleep(2) # www.python.orgを開く driver.get("https://www.python.org") print(driver.title, driver.current_url) time.sleep(2) # www.yahoo.co.jpに戻る driver.back() print(driver.title, driver.current_url) time.sleep(2) # www.google.co.jpに戻る driver.back() print(driver.title, driver.current_url) time.sleep(2) 以前は正常に動いていましたが、久しぶりにテストすると TypeError: WebDriver.__init__() got an unexpected keyword argument 'executable_path'とerror表示されます。Web 検索でいろいろ調べましたが、ここで使われているseleniumの最新版ではこのような記述の仕方が非推奨となり警告がでるようになったと記述されています。単なるエラーメッセージではなく全く動作しないので更に詳しく調べましたが、明確な解決方法にはたどり着けませんでした。 selenium web driverとchrome browserのversionは合わせています。 pythonでwebの自動操作を目指しているのですが初めの一歩で挫折状態です。 どなたか解決へ向けてのアドバイスを頂けませんか。 ちなみにexcel vba macroとselenium web driverを使ったwebの自動操作は実現できています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
聞いた話なので私も良く分かりませんが下記のように変更すると動くかもしれません。 1. selenium.webdriver.chrome.serviceからServiceをインポート 2. Service(executable_path=driver_path)でServiceオブジェクトを作成 3. webdriver.Chrome()の引数にservice=serviceを指定 【変更後のコード】 from selenium import webdriver from selenium.webdriver.chrome.service import Service import time # chromedriver.exeがある場所 driver_path = "driver/chromedriver.exe" # Serviceオブジェクトの作成 service = Service(executable_path=driver_path) # WebDriverの作成 driver = webdriver.Chrome(service=service) # www.google.co.jpを開く driver.get("https://www.google.co.jp") print(driver.title, driver.current_url) time.sleep(2) # www.yahoo.co.jpを開く driver.get("https://www.yahoo.co.jp") print(driver.title, driver.current_url) time.sleep(2) # www.python.orgを開く driver.get("https://www.python.org") print(driver.title, driver.current_url) time.sleep(2) # www.yahoo.co.jpに戻る driver.back() print(driver.title, driver.current_url) time.sleep(2) # www.google.co.jpに戻る driver.back() print(driver.title, driver.current_url) time.sleep(2)
お礼
補足
お礼の中で記述しましたが、VS codeではエラーが出て実行できませんでしたが、IDLEでは上手く行きました。このことに関し何かヒントがあれば教えて下さい。しばらく待ってから貴方の回答をベストアンサーに選び、締め切ります。