예제 #1
0
        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();
            }
        }
예제 #2
0
        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));
        }