private void CrawlPricePage(int codeNum) { var code = codeNum.ToString("D6"); string uri = $"https://fchart.stock.naver.com/sise.nhn?symbol={code}&timeframe=day&count=5000&requestType=0"; var pageString = GetPageString(uri); var root = XElement.Parse(pageString.Trim()); if (root.HasElements == false) { return; } var chartdata = root.Element("chartdata"); var name = chartdata.Attribute("name").Value; _logger.LogInformation($"Insert: {name} [{code}]"); var stock = new StockCosmos() { StockName = name, StockCode = code, }; foreach (var dayPrice in root.Element("chartdata").Elements("item")) { //<item data="20200407|7300|7450|6930|7430|178992" /> //날짜, 시가, 고가, 저가, 종가, 거래량 var splitedData = dayPrice.Attribute("data").Value.Split('|'); var dateInfo = DateTime.ParseExact(splitedData[0], "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture); var price = new Price() { PriceDate = dateInfo, StartPrice = Int32.Parse(splitedData[1]), HighPrice = Int32.Parse(splitedData[2]), LowPrice = Int32.Parse(splitedData[3]), EndPrice = Int32.Parse(splitedData[4]), Volumn = Int32.Parse(splitedData[5]), }; if (price.PriceDate < DateTime.ParseExact("20100101", "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture).ToUniversalTime()) { continue; } stock.Prices.Add(price); } using (var context = new StockContext()) { context.Database.EnsureCreated(); context.Add(stock); context.SaveChanges(); } }
public IActionResult Get(string code) { StockCosmos stock = null; try { stock = _stockContext.Stocks .Where(s => s.StockCode == code) .FirstOrDefault(); } catch (Exception ex) { // Some logging here? return(null); } if (stock == null) { return(NotFound(stock)); } return(Ok(stock)); }