Pythonでseleniumを使いスクレイピングしたいのですが、click()ができない

実現したいこと

最終目標はPythonでスクレイピングすることが目的です。
モジュールはselemiumを使ってます。
今はコードの最後の動作を行いたいです。

前提

Pythonで自動スクレイピングアプリを作成してまして、ローカルのエクセルから指定データを抽出し、検索ページに出力して情報を引き出す。その結果を再度エクセルの指定箇所に出力する。

発生している問題・エラーメッセージ

検索結果の該当カテゴリーをクリックで選択するのだが、クリックすることができない。
エラーメッセージ:

Warning (from warnings module):
File "C:\Users\USER\Desktop\Python作業フォルダ\test.py", line 17
browser = webdriver.Chrome(r'C:\chromedriver\chromedriver.exe')
DeprecationWarning: executable_path has been deprecated, please pass in a Service object

Traceback (most recent call last):
File "C:\Users\USER\Desktop\Python作業フォルダ\test.py", line 30, in <module>
element = wait.until(EC.presence_of_element_located((By.XPATH,'//*[@id="main_contents"]/main/div[2]/div[2]/dl/dd/ul/li[2]/a'))).click()
File "C:\Users\USER\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\selenium\webdriver\support\wait.py", line 95, in until
raise TimeoutException(message, screen, stacktrace)

該当のソースコード

Python

1import time 2import pandas as pd 3from selenium import webdriver 4from selenium.webdriver.common.keys import Keys 5from selenium.webdriver.common.by import By 6from selenium.webdriver.support.ui import WebDriverWait 7from selenium.webdriver.support import expected_conditions as EC 8 9##使うエクセルを指定する10df = pd.read_excel('エクセルファイル名.xlsx',sheet_name =0)11 12##抜き取るシート内の情報13for row in df.values:14 print(row[6])15 16##検索ページを開く17browser = webdriver.Chrome(r'C:\chromedriver\chromedriver.exe')18browser.get('https://www2.jasrac.or.jp/eJwid/main?trxID=F00100')19 20##エクセルから取った情報を該当箇所に記入して検索掛ける21wait = WebDriverWait(browser, 50)22element = wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="searchForm"]/div[1]/dl[1]/dd/input')))23element.clear()24element.send_keys(row[6])25 26##検索ボタンをクリックして、詳細ページに遷移する(新しいブラウザ)27element = wait.until(EC.presence_of_element_located((By.XPATH,'//*[@id="searchForm"]/div[2]/button[2]'))).click()28 29##配信ボタンをクリックして、管理状況詳細を表示させる30element = wait.until(EC.presence_of_element_located((By.XPATH,'//*[@id="main_contents"]/main/div[2]/div[2]/dl/dd/ul/li[2]/a'))).click()31 32 33print(df)

試したこと

配信ボタンをクリックのコードのelement=を消して再度実行しましたが、結果変わりませんでした。
同様の問題を検索しましたが、効果的なページがみあたりませんでした。
expathに代わるものも探しましたが、ピンときたものはなかった。

コメントを投稿

0 コメント