@@ -57,7 +57,7 @@ def get_recent_data(equity):
57
57
58
58
result = result [::- 1 ]
59
59
60
- df = pd .DataFrame .from_records ([value .to_dict () for value in result ])
60
+ df = pd .DataFrame .from_records ([value .equity_to_dict () for value in result ])
61
61
df .set_index ('Date' , inplace = True )
62
62
63
63
return df
@@ -84,12 +84,12 @@ def get_historical_data(equity, start, end):
84
84
status = req .status_code
85
85
html = BeautifulSoup (req .text , 'html.parser' )
86
86
87
- selection = html .select ('div.instrumentHeader > h2.float_lang_base_1 ' )
87
+ selection = html .select ('div.instrumentHeader > h2' )
88
88
for element in selection :
89
89
header = element .text
90
90
91
91
params = {
92
- "curr_id" : "558" ,
92
+ "curr_id" : row . id ,
93
93
"smlID" : "1159685" ,
94
94
"header" : header ,
95
95
"st_date" : start ,
@@ -117,7 +117,6 @@ def get_historical_data(equity, start, end):
117
117
118
118
for element in selection :
119
119
info = element .getText ().strip ().split ()
120
- print (info )
121
120
122
121
stock_date = datetime .datetime .strptime (info [0 ].replace ('.' , '-' ), '%d-%m-%Y' )
123
122
stock_close = float (info [1 ].replace (',' , '.' ))
@@ -137,13 +136,13 @@ def get_historical_data(equity, start, end):
137
136
138
137
result = result [::- 1 ]
139
138
140
- df = pd .DataFrame .from_records ([value .to_dict () for value in result ])
139
+ df = pd .DataFrame .from_records ([value .equity_to_dict () for value in result ])
141
140
df .set_index ('Date' , inplace = True )
142
141
143
142
return df
144
143
145
144
146
- """ def get_fund_recent_data(fund):
145
+ def get_fund_recent_data (fund ):
147
146
resource_package = __name__
148
147
resource_path = '/' .join (('resources' , 'funds.csv' ))
149
148
if pkg_resources .resource_exists (resource_package , resource_path ):
@@ -176,18 +175,71 @@ def get_historical_data(equity, start, end):
176
175
stock_open = float (info [2 ].replace (',' , '.' ))
177
176
stock_max = float (info [3 ].replace (',' , '.' ))
178
177
stock_min = float (info [4 ].replace (',' , '.' ))
179
- stock_volume = 0
180
178
181
- if info[5].__contains__('M'):
182
- stock_volume = int(float(info[5].replace('M', '').replace(',', '.')) * 1000000)
183
- elif info[5].__contains__('B'):
184
- stock_volume = int(float(info[5].replace('B', '').replace(',', '.')) * 1000000000)
179
+ result .insert (len (result ), Data (stock_date , stock_close , stock_open , stock_max , stock_min , None ,))
185
180
186
- result.insert(len(result), Data(stock_date, stock_close, stock_open, stock_max, stock_min, stock_volume,))
181
+ result = result [::- 1 ]
182
+
183
+ df = pd .DataFrame .from_records ([value .fund_to_dict () for value in result ])
184
+ df .set_index ('Date' , inplace = True )
185
+
186
+ return df
187
+
188
+
189
+ def get_fund_historical_data (fund , start , end ):
190
+ resource_package = __name__
191
+ resource_path = '/' .join (('resources' , 'funds.csv' ))
192
+ if pkg_resources .resource_exists (resource_package , resource_path ):
193
+ funds = pd .read_csv (pkg_resources .resource_filename (resource_package , resource_path ))
194
+ else :
195
+ names = fs .get_fund_names ()
196
+ funds = pd .DataFrame (names )
197
+
198
+ for row in funds .itertuples ():
199
+ if row .name .lower () == fund .lower ():
200
+ header = "Datos históricos " + row .symbol
201
+
202
+ params = {
203
+ "curr_id" : row .id ,
204
+ "smlID" : "15361696" ,
205
+ "header" : header ,
206
+ "st_date" : start ,
207
+ "end_date" : end ,
208
+ "interval_sec" : "Daily" ,
209
+ "sort_col" : "date" ,
210
+ "sort_ord" : "DESC" ,
211
+ "action" : "historical_data"
212
+ }
213
+
214
+ head = {
215
+ "User-Agent" : ua .get_random (),
216
+ "X-Requested-With" : "XMLHttpRequest"
217
+ }
218
+
219
+ url = "https://es.investing.com/instruments/HistoricalDataAjax"
220
+
221
+ req = requests .post (url , data = params , headers = head )
222
+
223
+ html = BeautifulSoup (req .content , 'html.parser' )
224
+
225
+ selection = html .select ('div#results_box > table#curr_table > tbody > tr' )
226
+
227
+ result = list ()
228
+
229
+ for element in selection :
230
+ info = element .getText ().strip ().split ()
231
+
232
+ stock_date = datetime .datetime .strptime (info [0 ].replace ('.' , '-' ), '%d-%m-%Y' )
233
+ stock_close = float (info [1 ].replace (',' , '.' ))
234
+ stock_open = float (info [2 ].replace (',' , '.' ))
235
+ stock_max = float (info [3 ].replace (',' , '.' ))
236
+ stock_min = float (info [4 ].replace (',' , '.' ))
237
+
238
+ result .insert (len (result ), Data (stock_date , stock_close , stock_open , stock_max , stock_min , None ,))
187
239
188
240
result = result [::- 1 ]
189
241
190
- df = pd.DataFrame.from_records([value.to_dict () for value in result])
242
+ df = pd .DataFrame .from_records ([value .fund_to_dict () for value in result ])
191
243
df .set_index ('Date' , inplace = True )
192
244
193
- return df"""
245
+ return df
0 commit comments