Example #1
0
        private static List <WebtoonListSpecificPageInformations> GetInternalWebtoonListPageInformations(string url, int page)
        {
            try
            {
                url += "&page=" + page;

                HttpWebRequest request = ( HttpWebRequest )WebRequest.Create(url);
                request.Method    = "GET";
                request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36";

                using (HttpWebResponse response = ( HttpWebResponse )request.GetResponse( ))
                {
                    using (Stream responseStream = response.GetResponseStream( ))
                    {
                        //using ( StreamReader reader = new StreamReader( responseStream, Encoding.UTF8 ) )
                        //{
                        //	string html = reader.ReadToEnd( );

                        HtmlDocument document = new HtmlDocument( );
                        document.Load(responseStream, Encoding.UTF8);

                        List <WebtoonListSpecificPageInformations> specificPageInformations = new List <WebtoonListSpecificPageInformations>( );

                        int index = 1;
                        foreach (HtmlNode node in document.DocumentNode.SelectNodes("//tr/td[@class!=\"title\"]"))
                        {
                            WebtoonListSpecificPageInformations specificPageData = new WebtoonListSpecificPageInformations( );

                            HtmlNode thumbnailImageNode         = document.DocumentNode.SelectSingleNode("//tr[" + index + "]/td/a/img");
                            HtmlNode thumbnailImageClickerANode = document.DocumentNode.SelectSingleNode("//tr[" + index + "]/td/a");

                            HtmlNode starRateNode   = document.DocumentNode.SelectSingleNode("//tr[" + index + "]/td/div/strong");
                            HtmlNode uploadDateNode = document.DocumentNode.SelectSingleNode("//tr[" + index + "]/td[@class=\"num\"]");

                            HtmlNode bgmAvaliable = document.DocumentNode.SelectSingleNode("//tr[" + index + "]/td[@class=\"title\"]/span[@class=\"ico_bgm\"]");

                            Console.WriteLine(index + " >PAGE : " + thumbnailImageNode.GetAttributeValue("src", "") + " / " + thumbnailImageClickerANode.GetAttributeValue("href", "") + " / " + thumbnailImageNode.GetAttributeValue("title", ""));
                            Console.WriteLine(starRateNode.InnerText);
                            Console.WriteLine(uploadDateNode.InnerText);
                            Console.WriteLine("BGM : " + (bgmAvaliable != null).ToString( ));

                            specificPageData.title      = HttpUtility.HtmlDecode(thumbnailImageNode.GetAttributeValue("title", ""));
                            specificPageData.thumbnail  = thumbnailImageNode.GetAttributeValue("src", "");
                            specificPageData.starRate   = double.Parse(starRateNode.InnerText);
                            specificPageData.uploadDate = uploadDateNode.InnerText;
                            specificPageData.url        = "http://comic.naver.com" + thumbnailImageClickerANode.GetAttributeValue("href", "");
                            specificPageData.num        = int.Parse(HttpUtility.ParseQueryString((new Uri(specificPageData.url)).Query).Get("no"));

                            if (bgmAvaliable != null)
                            {
                                specificPageData.bgm = GetPageBGMUrl(specificPageData.url);
                            }
                            else
                            {
                                specificPageData.bgm = "";
                            }

                            specificPageInformations.Add(specificPageData);

                            index++;
                        }

                        return(specificPageInformations);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);

                return(null);
            }
        }
        private static List <WebtoonListSpecificPageInformations> GetInternalWebtoonListPageInformations(string url, int page)
        {
            List <WebtoonListSpecificPageInformations> specificPageInformations = new List <WebtoonListSpecificPageInformations>( );

            url += "&page=" + page;

            HttpWebRequestHelper.GetHttpRequest(url, GlobalVar.DefaultUserAgent, "http://comic.naver.com", null, (HttpWebRequest request, Stream stream) =>
            {
                HtmlDocument document = new HtmlDocument( );
                document.Load(stream, Encoding.UTF8);

                int index = 1;

                while (true)                                                                                   // 위험할 수 있음 테스트가 필요함
                {
                    HtmlNode checkIsBanner = document.DocumentNode.SelectSingleNode("//tr[" + index + "]/td"); // 리스트가 없으면 전체를 탐색한 것

                    if (checkIsBanner == null)
                    {
                        break;
                    }

                    if (checkIsBanner != null && checkIsBanner.GetAttributeValue("colspan", "") == "4")                         // 게임 웹툰 또는 스토어 웹툰 배너 체크
                    {
                        index++;
                        continue;
                    }

                    WebtoonListSpecificPageInformations specificPageData = new WebtoonListSpecificPageInformations( );

                    HtmlNode thumbnailImageNode         = document.DocumentNode.SelectSingleNode("//tr[" + index + "]/td/a/img");                          // 썸네일 노드
                    HtmlNode thumbnailImageClickerANode = document.DocumentNode.SelectSingleNode("//tr[" + index + "]/td/a");                              // 썸네일 a 노드
                    HtmlNode starRateNode   = document.DocumentNode.SelectSingleNode("//tr[" + index + "]/td/div[@class=\"rating_type\"]/strong");         // 별점 노드
                    HtmlNode uploadDateNode = document.DocumentNode.SelectSingleNode("//tr[" + index + "]/td[@class=\"num\"]");                            // 업로드 일 노드
                    HtmlNode bgmAvaliable   = document.DocumentNode.SelectSingleNode("//tr[" + index + "]/td[@class=\"title\"]/span[@class=\"ico_bgm\"]"); // BGM 있음?

                    specificPageData.title      = HttpUtility.HtmlDecode(thumbnailImageNode.GetAttributeValue("title", ""));
                    specificPageData.thumbnail  = thumbnailImageNode.GetAttributeValue("src", "");
                    specificPageData.starRate   = double.Parse(starRateNode.InnerText);
                    specificPageData.uploadDate = uploadDateNode.InnerText;
                    specificPageData.url        = "http://comic.naver.com" + thumbnailImageClickerANode.GetAttributeValue("href", "");
                    specificPageData.num        = int.Parse(HttpUtility.ParseQueryString((new Uri(specificPageData.url)).Query).Get("no"));
                    specificPageData.contents   = GetDetailPageImageContentsOnly(specificPageData.url);

                    if (bgmAvaliable != null)                       // BGM 있으면 BGM 주소 가져옴
                    {
                        specificPageData.bgm = GetPageBGMUrl(specificPageData.url);
                    }
                    else
                    {
                        specificPageData.bgm = "";
                    }

                    specificPageInformations.Add(specificPageData);

                    index++;

                    Thread.Sleep(30);
                }
            });

            return(specificPageInformations);
        }