実現したいこと
最終目標は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に代わるものも探しましたが、ピンときたものはなかった。

回答1件
あなたの回答
tips
プレビュー