質問するログイン新規登録

質問編集履歴

1

追記

2019/08/07 09:56

投稿

ryo387841
ryo387841

スコア13

title CHANGED
File without changes
body CHANGED
@@ -51,4 +51,101 @@
51
51
  - requests==2.22.0
52
52
 
53
53
  ###備考
54
- すみませんが、どなたかヒントをいただけると助かります。
54
+ すみませんが、どなたかヒントをいただけると助かります。
55
+
56
+ ###追記
57
+ 指摘していただいた内容を反映し、下記のようなコードにしてみました。
58
+ ダウンロードcsvの保存先をデスクトップにしたいのですが、
59
+ ダウンロードフォルダに保存されてしまいます。
60
+
61
+ どこを修正する必要があるか教えていただけないでしょうか?
62
+
63
+ ```Python
64
+ import requests
65
+ from selenium import webdriver
66
+ import time
67
+ from selenium.webdriver.support.ui import Select
68
+ import datetime
69
+
70
+ def main(url,driver_path,download_dir):
71
+ dict = get_date()
72
+ driver = init_selenium(driver_path,download_dir)
73
+ hack(url,dict,driver)
74
+
75
+ def get_date():
76
+ yesterday = datetime.date.today() - datetime.timedelta(1)
77
+ dict = {}
78
+ dict['y']=yesterday.year
79
+ dict['m']=yesterday.month
80
+ dict['d']=yesterday.day
81
+ return dict
82
+
83
+ def hack(url,dict,driver):
84
+
85
+ #driver = webdriver.Chrome('C:/Users/10001205180/Desktop/selenium/chromedriver')
86
+ driver.get(url)
87
+
88
+ time.sleep(1)
89
+ driver.find_element_by_id('pr51').click()#愛知を選択
90
+ time.sleep(2) #5秒遅らせる
91
+
92
+ element = driver.find_element_by_xpath("//div[@id='stationMap']/div[7]/div")
93
+ element.click()#名古屋を選択
94
+ time.sleep(2)
95
+
96
+ driver.find_element_by_id('elementButton').click()#項目選択画面へ
97
+ time.sleep(1)
98
+
99
+ driver.find_element_by_xpath("//div[@id='aggrgPeriod']/div/div/div/label/span").click()#時別値を選択
100
+ time.sleep(1)
101
+
102
+ driver.find_element_by_id('気温').click()#気温を選択
103
+
104
+ driver.find_element_by_id('相対湿度').click()#湿度を選択
105
+
106
+ driver.find_element_by_id('periodButton').click()#期間指定画面へ
107
+ time.sleep(1)
108
+
109
+ starty_element = driver.find_element_by_xpath("//div[@id='selectPeriod']/div/div/div[2]/div[2]/select")
110
+ starty_select_element = Select(starty_element)
111
+ starty_select_element.select_by_value(str(dict['y']))
112
+
113
+ startm_element = driver.find_element_by_xpath("//div[@id='selectPeriod']/div/div/div[2]/div[2]/select[2]")
114
+ startm_select_element = Select(startm_element)
115
+ startm_select_element.select_by_value(str(dict['m']))
116
+
117
+ startd_element = driver.find_element_by_xpath("//div[@id='selectPeriod']/div/div/div[2]/div[2]/select[3]")
118
+ startd_select_element = Select(startd_element)
119
+ startd_select_element.select_by_value(str(dict['d']))
120
+ ####################################################################################################################
121
+ endy_element = driver.find_element_by_xpath("//div[@id='selectPeriod']/div/div/div[2]/div[3]/select")
122
+ endy_select_element = Select(endy_element)
123
+ endy_select_element.select_by_value(str(dict['y']))
124
+
125
+ endm_element = driver.find_element_by_xpath("//div[@id='selectPeriod']/div/div/div[2]/div[3]/select[2]")
126
+ endm_select_element = Select(endm_element)
127
+ endm_select_element.select_by_value(str(dict['m']))
128
+
129
+ endd_element = driver.find_element_by_xpath("//div[@id='selectPeriod']/div/div/div[2]/div[3]/select[3]")
130
+ endd_select_element = Select(endd_element)
131
+ endd_select_element.select_by_value(str(dict['d']))
132
+
133
+ out_element = driver.find_element_by_xpath("//span[@id='csvdl']/img").click()
134
+ time.sleep(3)
135
+ driver.quit()
136
+
137
+ def init_selenium(driver_path,download_directory):
138
+ ###Chromeへオプションを設定
139
+ chop = webdriver.ChromeOptions() #
140
+ prefs = {"download.default_directory" : download_directory}
141
+ chop.add_experimental_option("prefs",prefs)
142
+ chop.add_argument('--ignore-certificate-errors') #SSLエラー対策
143
+ driver = webdriver.Chrome(driver_path,chrome_options = chop)
144
+ return driver
145
+
146
+ if __name__ == '__main__':
147
+ url = 'https://www.data.jma.go.jp/gmd/risk/obsdl/index.php'
148
+ driver_path = 'C:/Users/user/Desktop/selenium/chromedriver'
149
+ download_dir = 'c:\Users\user\Desktop'
150
+ main(url,driver_path,download_dir)
151
+ ```