質問編集履歴

1

何故か作成途中の内容が反映された

2021/01/05 09:14

投稿

666_paru
666_paru

スコア20

test CHANGED
File without changes
test CHANGED
@@ -1,10 +1,20 @@
1
- seleniumで更新の速い要素の内容を取得しようと、更新されているためと思わるStaleElementReferenceExceptionがでてす。
1
+ 取得しようとしていのはテーブルデータで毎秒数回更新されており、こを更新毎に取得す。
2
+
3
+ beautifulsoupでは、更新してパースしている時間に更新されてしまい、処理が追いつかずでした。
2
4
 
3
5
 
4
6
 
7
+ seleniumで取得できるのですが.textで文字列に変換する際に、更新されているためと思われるStaleElementReferenceExceptionがでてしまいます。
8
+
9
+
10
+
5
- ```python
11
+ seleniumでは更新されており取得できず、beautifulsoupでは飛び飛びでしか取得できず、こちらの解決法を教えて頂きたく思います。
12
+
13
+
6
14
 
7
15
  エラー内容
16
+
17
+ ```python
8
18
 
9
19
  selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document
10
20
 
@@ -12,15 +22,7 @@
12
22
 
13
23
 
14
24
 
15
- 取得しようとしているのはテーブルデータで、FXの価格のようなものなので頻繁に更新されており、これを更新毎に取得したいです。
16
-
17
- 証券会社のAPIでは
18
-
19
- beautifulsoupも試しましたが、パースしている時間に何度か更新されてしまい、飛び飛びのデータになりました。
20
-
21
-
22
-
23
- 取得したいデータは①の以下の取得したいデータの部分です。
25
+ 取得したいデータは以下のHTML①の部分です。
24
26
 
25
27
  ここのデータが30秒間更新されていき、30秒後に確定した段階で1段下にずれて②の位置になり、①に新規でテーブルができます。
26
28
 
@@ -32,7 +34,7 @@
32
34
 
33
35
  <div style="position: absolute; left: ~~~" aria-label="A chart.">
34
36
 
35
- <svg ~~~>
37
+ <svg ~~~>
36
38
 
37
39
  <div aria-label="data" style="position:====">
38
40
 
@@ -52,11 +54,11 @@
52
54
 
53
55
  </thead>
54
56
 
55
- <tbody>
57
+ <tbody>
56
58
 
57
59
  <tr> ①・・・取得したいデータ(更新される)
58
60
 
59
- <td>2021:01:04 15:32:24:06</td>
61
+ <td>2021:01:04 15:32:30:00</td>
60
62
 
61
63
  <td>84.032</td>
62
64
 
@@ -76,4 +78,36 @@
76
78
 
77
79
  </tr>
78
80
 
81
+     ~~~~~~~
82
+
83
+     ~~~~~~~
84
+
79
85
  ```
86
+
87
+
88
+
89
+ 取得処理は以下のように記載しました。
90
+
91
+ ```python
92
+
93
+ driver.implicitly_wait(20)
94
+
95
+ driver.get(URL)
96
+
97
+
98
+
99
+ while True:
100
+
101
+ for e in driver.find_element_by_id('chart').find_elements_by_tag_name('td'):
102
+
103
+ print(e.text)
104
+
105
+        #TODO データ保存処理
106
+
107
+ ```
108
+
109
+
110
+
111
+ 詳しい方、お手数をおかけしますが教えてください。
112
+
113
+ よろしくお願いいたします。