回答編集履歴

1

追記

2020/05/19 12:59

投稿

shirai
shirai

スコア1290

test CHANGED
@@ -19,3 +19,125 @@
19
19
  time.sleep(2)
20
20
 
21
21
  ```
22
+
23
+
24
+
25
+ # コメントを受けて追記
26
+
27
+
28
+
29
+ なるほど。
30
+
31
+ 日によって成功確率が異なるということは、
32
+
33
+ サーバ(スクレイピング先)かクライアント(自PC)のどちらかが
34
+
35
+ 極端にスペックが低い可能性が高いです。
36
+
37
+
38
+
39
+ 自PCを見て異常がなさそうなら、
40
+
41
+ 待ち方を変えてみましょう。
42
+
43
+ あとスクロールが悪さをしている可能性もあるので
44
+
45
+ これもつけたり外したりしてみてください。
46
+
47
+
48
+
49
+ ```python
50
+
51
+ from selenium.common.exceptions import TimeoutException
52
+
53
+ from selenium.webdriver.common.by import By
54
+
55
+ from selenium.webdriver.support import expected_conditions as EC
56
+
57
+ from selenium.webdriver.support.ui import WebDriverWait
58
+
59
+
60
+
61
+ try:
62
+
63
+ WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.ID, 'iFrameのid要素')))
64
+
65
+ except TimeoutException:
66
+
67
+ print('20秒以内にページが読み込めませんでした。')
68
+
69
+ driver.quit()
70
+
71
+ exit()
72
+
73
+ driver.switch_to.frame(driver.find_element_by_id('iFrameのid要素'))
74
+
75
+
76
+
77
+ try:
78
+
79
+ WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.NAME, 'button')))
80
+
81
+ except TimeoutException:
82
+
83
+ print('20秒以内にボタンがクリックできませんでした。')
84
+
85
+ driver.quit()
86
+
87
+ exit()
88
+
89
+ driver.find_element_by_name("button").click()
90
+
91
+
92
+
93
+ driver.switch_to.window(driver.window_handles[-1])
94
+
95
+ print('最後までいけました。')
96
+
97
+ driver.quit()
98
+
99
+ exit()
100
+
101
+ ```
102
+
103
+
104
+
105
+ ---
106
+
107
+
108
+
109
+ これで「20秒以内にページが読み込めませんでした。」が頻発するようでしたら、
110
+
111
+
112
+
113
+ ```python
114
+
115
+ try:
116
+
117
+ WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.ID, 'iFrameのid要素')))
118
+
119
+ except TimeoutException:
120
+
121
+ print('20秒以内にページが読み込めませんでした。')
122
+
123
+ driver.quit()
124
+
125
+ exit()
126
+
127
+ ```
128
+
129
+
130
+
131
+
132
+
133
+
134
+
135
+ ```python
136
+
137
+ driver.implicitly_wait(20)
138
+
139
+ ```
140
+
141
+
142
+
143
+ に置き換えてみてください。