実現したいこと
とあるサイトをスクレイピングしていてtarget 属性をクリックすると新しいタブがでてきて元のタブの要素が0になってしまいます
(新しいタブが開いて遷移をしてしまい、一つ目のタブの要素がゼロになってしまうため)
原因は分かっているのですがどうればいいのかが分かりません
どうすればいいですか?
発生している問題・エラーメッセージ
#list index out of range 一周目は問題なくできますが二周目で要素が0になります
該当のソースコード
python
1number = len(driver.find_elements(By.XPATH, '//*[@id="root"]/div/div/div[5]/div[2]/div[4]/div[5]/div/div[1]/table/tbody/tr/td[2]/div/div[1]/a'))#要素の数 2aaa=[] 3 4for i in range(number): 5 sleep(3) 6 driver.find_elements(By.XPATH, '//*[@id="root"]/div/div/div[5]/div[2]/div[4]/div[5]/div/div[1]/table/tbody/tr/td[2]/div/div[1]/a')[i].click()#要素をクリック#二周目で元のタブの要素が0のためエラー:『list index out of range』 7 driver.switch_to.window(driver.window_handles[1])#target属性で新しいタブが開く 8 sleep(3) 9 aaa.append(driver.find_element(By.XPATH, '//*[@id="main"]/div[8]/table[2]/tbody/tr[1]/td[1]/table/tbody/tr[11]/td[3]').text)#「1,234」「5,678」のような数字(情報)を引き出す 10 sleep(3) 11 aaa[i]=aaa[i].replace(',', '')#,をなくす 12 driver.close()#閉じる 13 sleep(5) 14 driver.switch_to.window(driver.window_handles[0])#一番最初のタブに戻る 15 sleep(5)
試したこと
ChatGPTで「seleniumでtarget 属性をクリックすると要素が0になる」と聞きましたができませんでした
上記を全部試してみましたができません
試しにエラーのところで
print(driver.find_elements(By.XPATH, '//*[@id="root"]/div/div/div[5]/div[2]/div[4]/div[5]/div/div[1]/table/tbody/tr/td[2]/div/div[1]/a'))とやるとリストで50個の要素がありました

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/02/14 14:21
2023/02/14 22:35