예제 #1
0
        //데이터를 저장하는 함수
        public void collectdata(HtmlAgilityPack.HtmlDocument document)
        {
            danawa = new danawa();
            //   Console.WriteLine("콜레드데이타 함수 속");
            try
            {
                foreach (var VARIABLE in document.DocumentNode.Descendants().Where(x =>
                                                                                   x.Name == "div" && x.Attributes.Contains("class") &&
                                                                                   x.Attributes["class"].Value.Split().Contains("prod_pricelist")))
                {
                    //다나와 가격비교 리스트속 리스트 데이터
                    try
                    {
                        VARIABLE.SelectSingleNode(".//p[@class='chk_sect']").InnerText.Trim();
                        realurl = VARIABLE.SelectSingleNode(".//a").GetAttributeValue("href", "");
                        // Console.WriteLine(realurl);
                        // Console.WriteLine("다나와 라이브러리 타는 곳");
                        danawa.getdanawalink(realurl);
                        //danawadatalist.AddRange(danawa.getdatas());
                    }
                    //다나와 가격비교 리스트
                    catch (NullReferenceException e)
                    {
                        try
                        {
                            // Console.WriteLine("사이트 목록");
                            //Console.WriteLine(VARIABLE.InnerHtml);

                            realurl = VARIABLE.SelectSingleNode(".//a").GetAttributeValue("href", "");
                            if (realurl.Trim() == "#")
                            {
                                realurl =
                                    VARIABLE.Descendants()
                                    .Where(x => x.Name == "a")
                                    .ElementAt(1)
                                    .GetAttributeValue("href", "");
                            }

                            realurl = geturl(realurl);

                            //   Console.WriteLine(realurl);
                            name = VARIABLE.SelectSingleNode(".//img").GetAttributeValue("alt", "").Trim();
                            //  Console.WriteLine(name);
                            price = VARIABLE.SelectSingleNode(".//strong").InnerText.Trim();
                            //   Console.WriteLine(price);
                            delivery = VARIABLE.SelectSingleNode(".//span[@class='ship_sect']").SelectSingleNode(".//strong").InnerText.Trim();
                            //   Console.WriteLine(delivery);
                            try
                            {
                                int tmp  = 0;
                                int tmp2 = 0;
                                itemNum = "";
                                if (name.Trim() == "11번가")
                                {
                                    tmp     = realurl.IndexOf(@"prdNo=") + 6;
                                    tmp2    = realurl.IndexOf(@"&tid");
                                    itemNum = realurl.Substring(tmp, tmp2 - tmp);
                                }
                                else if (name == "G마켓")
                                {
                                    tmp     = realurl.IndexOf("=") + 1;
                                    tmp2    = realurl.IndexOf("&");
                                    itemNum = realurl.Substring(tmp, tmp2 - tmp);
                                }
                                else if (name == "옥션")
                                {
                                    tmp     = realurl.IndexOf("=") + 1;
                                    tmp2    = realurl.IndexOf("&");
                                    itemNum = realurl.Substring(tmp, tmp2 - tmp);
                                }
                                else if (name == "GS샵")
                                {
                                    tmp     = realurl.IndexOf("ecpid") + 6;
                                    tmp2    = realurl.IndexOf("&u");
                                    itemNum = realurl.Substring(tmp, tmp2 - tmp);
                                }
                                else if (name == "CJMALL")
                                {
                                    tmp     = realurl.IndexOf("item_cd") + 8;
                                    itemNum = realurl.Substring(tmp, realurl.Length - tmp);
                                }
                                // Console.WriteLine(itemNum);
                            }
                            catch (ArgumentException)
                            {
                                // Console.WriteLine("아이템넘버 exception 5개의 사이트가 아니다");
                            }

                            datas    = new string[6];
                            datas[0] = realurl.Trim();
                            datas[1] = name.Trim();
                            datas[2] = itemNum.Trim();
                            datas[3] = price.Trim();
                            datas[4] = profit.Trim();
                            datas[5] = delivery.Trim();
                            danawadatalist.Add(datas);
                        }
                        catch (NullReferenceException)
                        {
                            // Console.WriteLine("콜렉트다나와함수에서 단종된 상품");
                        }
                    }
                    // Console.WriteLine("/////////////////////////////////////////");
                }
            }
            catch (UriFormatException e)
            {
                //    Console.WriteLine("danawa UriFormatException");
            }

            catch (ArgumentException e)
            {
                //  Console.WriteLine("danawa ArgumentException");
            }
            catch (IndexOutOfRangeException e)
            {
                //  Console.WriteLine("danawa IndexOutOfRangeException");
            }
            catch (InvalidOperationException e)
            {
                //  Console.WriteLine("danawa InvalidOperationException");
            }
            catch (AggregateException e)
            {
                // Console.WriteLine("AggregateException");
            }
        }