取得しようとしているのはテーブルデータで、毎秒数回更新されており、これを更新毎に取得したいです。
beautifulsoupでは、更新してパースしている時間に更新されてしまい、処理が追いつかずでした。
seleniumで取得できるのですが.textで文字列に変換する際に、更新されているためと思われるStaleElementReferenceExceptionがでてしまいます。
seleniumでは更新されており取得できず、beautifulsoupでは飛び飛びでしか取得できず、こちらの解決法を教えて頂きたく思います。
エラー内容
python
1selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document
取得したいデータは以下のHTMLの①の部分です。
ここのデータが30秒間更新されていき、30秒後に確定した段階で1段下にずれて②の位置になり、①に新規でテーブルができます。
html
1<div id="chart"> 2 <div style="position: relative;wid~~~"> 3 <div style="position: absolute; left: ~~~" aria-label="A chart."> 4 <svg ~~~> 5 <div aria-label="data" style="position:===="> 6 <table> 7 <thead> 8 <tr> 9 <th>date</th> 10 <th>Pair1</th> 11 <th>Pair2</th> 12 </tr> 13 </thead> 14 <tbody> 15 <tr> ①・・・取得したいデータ(更新される) 16 <td>2021:01:04 15:32:30:00</td> 17 <td>84.032</td> 18 <td>50.896</td> 19 </tr> 20 21 <tr> ②・・・旧データ(更新されない) 22 <td>2021:01:04 15:32:00:00</td> 23 <td>84.532</td> 24 <td>50.996</td> 25 </tr> 26 ~~~~~~~ 27 ~~~~~~~
取得処理は以下のように記載しました。
python
1 driver.implicitly_wait(20) 2 driver.get(URL) 3 4 while True: 5 for e in driver.find_element_by_id('chart').find_elements_by_tag_name('td'): 6 print(e.text) 7 #TODO データ保存処理
詳しい方、お手数をおかけしますが教えてください。
よろしくお願いいたします。
あなたの回答
tips
プレビュー