前提・実現したいこと
Pythonでselemniumを用いたガバナンス報告書からの情報の自動取得を考えているのですが
<br>で囲まれたテキスト要素の取得ができず困っています。
発生している問題・エラーメッセージ
コード例では7203トヨタ自動車のガバナンス報告書の上部、【コーポレートガバナンス・コードの各原則に基づく開示】の
6 株主との対話 【原則5-1】の部分を取得したいと考えているのですが、
【コーポレートガバナンス・コードの各原則に基づく開示】の全体は取得できる一方で、<br>ではさまれている6 株主との対話 【原則5-1】の要素をx_pathで取得しようとしても、
selenium.common.exceptions.InvalidSelectorException: Message: invalid selector: The result of the xpath expression "/html/body/div/div/div[6]/div[2]/span/text()[100]" is: [object Text]. It should be an element.
といったエラーが出てしまいます。
このような<br>ではさまれている要素についてスクレイピングする方法があればご教示いただけますと幸いです。
該当のソースコード
Python
1from selenium import webdriver 2 3driver = webdriver.Chrome(r'C:\Program Files (x86)\Google\Chrome\chromedriver.exe') 4URL = "https://www2.tse.or.jp/tseHpFront/CGK010020Action.do" 5driver.get(URL) 6 7data = [] 8def check(): 9 "要素全体(こっちは取得できる)" 10 a1 = driver.find_element_by_xpath('/html/body/div/div/div[6]/div[2]/span').text 11 print(a1) 12 "取得したい要素(取得できない)" 13 a2 = driver.find_element_by_xpath('/html/body/div/div/div[6]/div[2]/span/text()[100]').text 14 print(a2) 15 16'''証券コード入力''' 17driver.find_element_by_css_selector("#bodycontents > div.pagecontents > form > div.boxOptListed03.fontsizeS > table:nth-child(2) > tbody > tr:nth-child(2) > td > input[type=text]").send_keys("7203") 18driver.find_element_by_css_selector('#bodycontents > div.pagecontents > form > p.fontsizeM.center > input:nth-child(1)').click() 19 20driver.find_element_by_css_selector('#bodycontents > div > form > table > tbody > tr:nth-child(4) > td:nth-child(9) > a:nth-child(3)').click() 21new_window = driver.window_handles[1] 22driver.switch_to.window(new_window) 23 24'''要素取得''' 25check() 26driver.close()
補足情報(FW/ツールのバージョンなど)
Python3, selenium 3.6.0, Chromeバージョン: 76
回答1件
あなたの回答
tips
プレビュー