예제 #1
0
        public GridResultData SubGridDataSet(string KeyWord, bool tagYn)
        {
            GridResultData Result = new GridResultData();

            //List<KeyWordResult> AllResult = new List<KeyWordResult>();
            //List<KeyWordResult> RefResult = new List<KeyWordResult>();
            List <KeywordList> RefShopKeyWord = new List <KeywordList>();
            ///List<ShopAPIResult> OpenApiList = new List<ShopAPIResult>();
            ///List<String> TitleKeywordList = new List<string>();

            //OpenApiDataSetResult openApiDataSetResult = new OpenApiDataSetResult();

            NaverApi             naverApi        = new NaverApi();
            NaverShoppingCrawler shoppingCrawler = new NaverShoppingCrawler();

            // 쇼핑 연관검색어와 SEO 태그를 조회한다.
            ReturnToMessage("쇼핑연관 검색어를 조회중입니다.");

            // 네이버 쇼핑 연관 검색어 + 태그 정보
            RefShopKeyWord = naverApi.ShopRelKeyword(KeyWord, out int TotalProdutCount);
            ShopWebResult webResult = new ShopWebResult();

            if (tagYn == true)
            {
                ReturnToMessage("태그정보를 분석합니다.");
                webResult = shoppingCrawler.SmartStoreInfoFinder(KeyWord);
            }
            else
            {
                ReturnToMessage("SEO 태그 분석을 제외하였습니다.");
            }

            Console.WriteLine("전 : " + RefShopKeyWord.Count);

            Result = new GridResultData()
            {
                ShoppingRefGrid = RefShopKeyWord, ShopWebDataResult = webResult
            };

            return(Result);
        }
예제 #2
0
        public GridResultData GridDataSet(string KeyWord, int RefMaxCount, SQLiteConnection conn)
        {
            int                       sellPrdCnt       = 0;
            int                       apiUseCount      = 0;
            int                       refAdTotalQcCnt  = 0;
            GridResultData            Result           = new GridResultData();
            List <KeyWordResult>      ADResult         = new List <KeyWordResult>();
            List <KeyWordResult>      RefShopResult    = new List <KeyWordResult>();
            List <KeyWordResult>      SEOResult        = new List <KeyWordResult>();
            List <KeywordList>        RefShopKeyWord   = new List <KeywordList>();
            List <ShopAPIResult>      OpenApiList      = new List <ShopAPIResult>();
            List <String>             TitleKeywordList = new List <string>();
            List <ProductKeyWordList> ProductWordList  = new List <ProductKeyWordList>();


            OpenApiDataSetResult openApiDataSetResult = new OpenApiDataSetResult();
            NaverApi             naverApi             = new NaverApi();
            NaverShoppingCrawler shoppingCrawler      = new NaverShoppingCrawler();

            ReturnToMessage("광고 연관 검색어를 조회합니다..");

            // 네이버 광고 API 실행
            string  naver = naverApi.NaverAdApi(KeyWord.Replace(" ", ""));
            JObject obj   = JObject.Parse(naver);
            JArray  array = null;

            if (obj["keywordList"] != null)
            {
                array = JArray.Parse(obj["keywordList"].ToString());
            }
            else
            {
                ReturnToMessage("-------------------------------------------");
                ReturnToMessage("네이버광고에서 데이터를 불러오지 못했습니다.");
                ReturnToMessage("현재시간과 컴퓨터시간이 오차가 있는지 확인해주세요.");
                ReturnToMessage("오차가 있다면 인터넷 시간서버와 동기화 후 다시 시도해주세요.");
                ReturnToMessage("-------------------------------------------");
                return(Result);
            }

            if (array.Count < 1)
            {
                ReturnToMessage("-------------------------------------------");
                ReturnToMessage("네이버광고에서 데이터를 불러오지 못했습니다.");
                ReturnToMessage("검색된 키워드가 없습니다.");
                ReturnToMessage("-------------------------------------------");
                return(Result);
            }

            // 네이버 키워드 도구 연관 검색어(조회키워드만)
            foreach (JObject itemObj in array)
            {
                string relKeyword             = itemObj["relKeyword"].ToString();             //키워드
                string monthlyPcQcCnt         = itemObj["monthlyPcQcCnt"].ToString();         //월간 pc 검색수
                string monthlyMobileQcCnt     = itemObj["monthlyMobileQcCnt"].ToString();     //월간 모바일 검색수
                string monthlyAvePcClkCnt     = itemObj["monthlyAvePcClkCnt"].ToString();     //월간 PC 클릭수
                string monthlyAveMobileClkCnt = itemObj["monthlyAveMobileClkCnt"].ToString(); //월간 모바일 클릭수
                string monthlyAvePcCtr        = itemObj["monthlyAvePcCtr"].ToString();        //월간 PC 클릭률
                string monthlyAveMobileCtr    = itemObj["monthlyAveMobileCtr"].ToString();    //월간 모바일 클릭률
                string plAvgDepth             = itemObj["plAvgDepth"].ToString();             //경쟁정도
                string compIdx = itemObj["compIdx"].ToString();                               // 월간노출광고수

                monthlyPcQcCnt     = monthlyPcQcCnt.Replace("<", "");
                monthlyMobileQcCnt = monthlyMobileQcCnt.Replace("<", "");



                ReturnToLabel(relKeyword);

                // 네이버 쇼핑 연관 검색어 + 네이버 키워드 도구 연관 검색어
                try
                {
                    openApiDataSetResult = naverApi.OpenApiDataSet(relKeyword); // 오픈API를 상품을 조회한다.
                }
                catch (Exception ex)
                {
                    ReturnToMessage("-------------------------------------------");
                    ReturnToMessage("네이버쇼핑검색과 통신도중 오류가 발생하였습니다.");
                    ReturnToMessage("-------------------------------------------");
                    Console.WriteLine("통신오류: " + ex.ToString());
                }

                sellPrdCnt = openApiDataSetResult.Total; // 키워드의 전체 상품수
                ADResult.Add(new KeyWordResult()
                {
                    RelKeyword = relKeyword, MonthlyPcQcCnt = monthlyPcQcCnt, MonthlyMobileQcCnt = monthlyMobileQcCnt, MonthlyAvePcClkCnt = monthlyAvePcClkCnt, MonthlyAveMobileClkCnt = monthlyAveMobileClkCnt, MonthlyAvePcCtr = monthlyAvePcCtr, MonthlyAveMobileCtr = monthlyAveMobileCtr, PlAvgDepth = plAvgDepth, CompIdx = compIdx, SellPrdQcCnt = sellPrdCnt, ShopResult = openApiDataSetResult.ShopAPIResultList
                });

                apiUseCount++; // 오픈 api 사용량 체크

                // 검색량 조절
                if (RefMaxCount <= apiUseCount)
                {
                    // 조회를 멈춘다.
                    break;
                }
            }

            // api 사용량 DB에 저장
            string           sqlFormattedDate = DateTime.Now.ToString("yyyy-MM-dd");
            string           sql2             = "select* from apicount where apicount.date ='" + sqlFormattedDate + "'";
            SQLiteCommand    cmd = new SQLiteCommand(sql2, conn);
            SQLiteDataReader rdr = cmd.ExecuteReader();

            int    idxRank = 0;
            string count   = string.Empty;

            while (rdr.Read())
            {
                if (idxRank == 0)
                {
                    count = Convert.ToString(rdr["count"]);
                }

                idxRank++;
            }

            Console.WriteLine("데이터베이스 출력 결과: " + count);

            if (string.IsNullOrEmpty(count))
            {
                String        sql     = "insert into apicount (date,count) values('" + sqlFormattedDate + "','" + apiUseCount + "')";
                SQLiteCommand command = new SQLiteCommand(sql, conn);
                int           result  = command.ExecuteNonQuery();
                Console.WriteLine("--------------------------------------");
                Console.WriteLine("데이터베이스 입력결과: " + Convert.ToString(result));
            }
            else
            {
                int           apiTotal = Convert.ToInt32(count) + apiUseCount;
                String        sql      = "update apicount set count='" + apiTotal + "'where date ='" + sqlFormattedDate + "'";
                SQLiteCommand command  = new SQLiteCommand(sql, conn);

                int result = command.ExecuteNonQuery();
                Console.WriteLine("--------------------------------------");
                Console.WriteLine("데이터베이스 입력결과: " + Convert.ToString(result));
            }



            Result = new GridResultData()
            {
                RefAdTotalQcCnt = refAdTotalQcCnt, AdRefGrid = ADResult
            };
            return(Result);
        }