質問編集履歴

1

追記

2019/08/07 09:56

投稿

ryo387841
ryo387841

スコア13

test CHANGED
File without changes
test CHANGED
@@ -105,3 +105,197 @@
105
105
  ###備考
106
106
 
107
107
  すみませんが、どなたかヒントをいただけると助かります。
108
+
109
+
110
+
111
+ ###追記
112
+
113
+ 指摘していただいた内容を反映し、下記のようなコードにしてみました。
114
+
115
+ ダウンロードcsvの保存先をデスクトップにしたいのですが、
116
+
117
+ ダウンロードフォルダに保存されてしまいます。
118
+
119
+
120
+
121
+ どこを修正する必要があるか教えていただけないでしょうか?
122
+
123
+
124
+
125
+ ```Python
126
+
127
+ import requests
128
+
129
+ from selenium import webdriver
130
+
131
+ import time
132
+
133
+ from selenium.webdriver.support.ui import Select
134
+
135
+ import datetime
136
+
137
+
138
+
139
+ def main(url,driver_path,download_dir):
140
+
141
+ dict = get_date()
142
+
143
+ driver = init_selenium(driver_path,download_dir)
144
+
145
+ hack(url,dict,driver)
146
+
147
+
148
+
149
+ def get_date():
150
+
151
+ yesterday = datetime.date.today() - datetime.timedelta(1)
152
+
153
+ dict = {}
154
+
155
+ dict['y']=yesterday.year
156
+
157
+ dict['m']=yesterday.month
158
+
159
+ dict['d']=yesterday.day
160
+
161
+ return dict
162
+
163
+
164
+
165
+ def hack(url,dict,driver):
166
+
167
+
168
+
169
+ #driver = webdriver.Chrome('C:/Users/10001205180/Desktop/selenium/chromedriver')
170
+
171
+ driver.get(url)
172
+
173
+
174
+
175
+ time.sleep(1)
176
+
177
+ driver.find_element_by_id('pr51').click()#愛知を選択
178
+
179
+ time.sleep(2) #5秒遅らせる
180
+
181
+
182
+
183
+ element = driver.find_element_by_xpath("//div[@id='stationMap']/div[7]/div")
184
+
185
+ element.click()#名古屋を選択
186
+
187
+ time.sleep(2)
188
+
189
+
190
+
191
+ driver.find_element_by_id('elementButton').click()#項目選択画面へ
192
+
193
+ time.sleep(1)
194
+
195
+
196
+
197
+ driver.find_element_by_xpath("//div[@id='aggrgPeriod']/div/div/div/label/span").click()#時別値を選択
198
+
199
+ time.sleep(1)
200
+
201
+
202
+
203
+ driver.find_element_by_id('気温').click()#気温を選択
204
+
205
+
206
+
207
+ driver.find_element_by_id('相対湿度').click()#湿度を選択
208
+
209
+
210
+
211
+ driver.find_element_by_id('periodButton').click()#期間指定画面へ
212
+
213
+ time.sleep(1)
214
+
215
+
216
+
217
+ starty_element = driver.find_element_by_xpath("//div[@id='selectPeriod']/div/div/div[2]/div[2]/select")
218
+
219
+ starty_select_element = Select(starty_element)
220
+
221
+ starty_select_element.select_by_value(str(dict['y']))
222
+
223
+
224
+
225
+ startm_element = driver.find_element_by_xpath("//div[@id='selectPeriod']/div/div/div[2]/div[2]/select[2]")
226
+
227
+ startm_select_element = Select(startm_element)
228
+
229
+ startm_select_element.select_by_value(str(dict['m']))
230
+
231
+
232
+
233
+ startd_element = driver.find_element_by_xpath("//div[@id='selectPeriod']/div/div/div[2]/div[2]/select[3]")
234
+
235
+ startd_select_element = Select(startd_element)
236
+
237
+ startd_select_element.select_by_value(str(dict['d']))
238
+
239
+ ####################################################################################################################
240
+
241
+ endy_element = driver.find_element_by_xpath("//div[@id='selectPeriod']/div/div/div[2]/div[3]/select")
242
+
243
+ endy_select_element = Select(endy_element)
244
+
245
+ endy_select_element.select_by_value(str(dict['y']))
246
+
247
+
248
+
249
+ endm_element = driver.find_element_by_xpath("//div[@id='selectPeriod']/div/div/div[2]/div[3]/select[2]")
250
+
251
+ endm_select_element = Select(endm_element)
252
+
253
+ endm_select_element.select_by_value(str(dict['m']))
254
+
255
+
256
+
257
+ endd_element = driver.find_element_by_xpath("//div[@id='selectPeriod']/div/div/div[2]/div[3]/select[3]")
258
+
259
+ endd_select_element = Select(endd_element)
260
+
261
+ endd_select_element.select_by_value(str(dict['d']))
262
+
263
+
264
+
265
+ out_element = driver.find_element_by_xpath("//span[@id='csvdl']/img").click()
266
+
267
+ time.sleep(3)
268
+
269
+ driver.quit()
270
+
271
+
272
+
273
+ def init_selenium(driver_path,download_directory):
274
+
275
+ ###Chromeへオプションを設定
276
+
277
+ chop = webdriver.ChromeOptions() #
278
+
279
+ prefs = {"download.default_directory" : download_directory}
280
+
281
+ chop.add_experimental_option("prefs",prefs)
282
+
283
+ chop.add_argument('--ignore-certificate-errors') #SSLエラー対策
284
+
285
+ driver = webdriver.Chrome(driver_path,chrome_options = chop)
286
+
287
+ return driver
288
+
289
+
290
+
291
+ if __name__ == '__main__':
292
+
293
+ url = 'https://www.data.jma.go.jp/gmd/risk/obsdl/index.php'
294
+
295
+ driver_path = 'C:/Users/user/Desktop/selenium/chromedriver'
296
+
297
+ download_dir = 'c:\Users\user\Desktop'
298
+
299
+ main(url,driver_path,download_dir)
300
+
301
+ ```