public async Task <string> GetOptionDailyCsvByTaifexAsync(OptionDailyQuery optionDailyQuery) { using (var client = _clientFactory.CreateClient()) { client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded")); var response = await client.PostAsync( "https://www.taifex.com.tw/cht/3/dlFutDataDown", new FormUrlEncodedContent( new [] { new KeyValuePair <string, string>("down_type", "1"), new KeyValuePair <string, string>("commodity_id", optionDailyQuery.optionType.ToString()), new KeyValuePair <string, string>("commodity_id2", ""), new KeyValuePair <string, string>("queryStartDate", optionDailyQuery.queryStartDate.ToString("yyyy/MM/dd")), new KeyValuePair <string, string>("queryEndDate", optionDailyQuery.queryEndDate.ToString("yyyy/MM/dd")), } ) ); var bytes = await response.Content.ReadAsByteArrayAsync(); var result = Encoding.GetEncoding(950).GetString(bytes); if (response.StatusCode != System.Net.HttpStatusCode.OK) { throw new PlatformNotSupportedException($"目前無法爬取期貨資料...,{response.StatusCode},{result}"); } return(result); } }
public async Task ExecuteAsync(OptionDailyQuery optionDailyQuery) { try { var csvString = await GetOptionDailyCsvByTaifexAsync(optionDailyQuery); var csvList = ReadCsv(csvString).ToList().Where(csv => !_optionDailyRepository.IsExist(csv)); _optionDailyRepository.Insert(csvList); } catch (Exception ex) { _logger.LogError(ex.Message); } }
public IActionResult RunOptionDailyClawer([FromBody] OptionDailyQuery optionDailyQuery) { Task clawerTask = _reportFcatory.GetOptionDailyClawer().ExecuteAsync(optionDailyQuery); return(new JsonResult(new { Success = true })); }