// 특정 웹툰의 상세보기 페이지의 정보를 가져오는 메소드 public static WebtoonDetailPageInformations?GetSpecificWebtoonDetailPageInformations(string url, int num) { try { url += "&no=" + num; 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( )) { HtmlDocument document = new HtmlDocument( ); document.Load(responseStream, Encoding.UTF8); WebtoonDetailPageInformations data = new WebtoonDetailPageInformations( ); foreach (HtmlNode i in document.DocumentNode.SelectNodes("//meta")) { switch (i.GetAttributeValue("property", "")) { case "og:description": // 자세히 보기 페이지에서는 description 노드가 title 이 됨 data.title = HttpUtility.HtmlDecode(i.GetAttributeValue("content", "")); break; case "og:image": // 썸네일 data.thumbnail = i.GetAttributeValue("content", ""); break; } } return(data); } } } catch (Exception ex) { Util.WriteErrorLog(ex.Message, Util.LogSeverity.EXCEPTION); return(null); } }
public static string GetDetailPageInformations(string url) { try { 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( ); //<meta property="og:description" content="82화 - 귀영 (3화)"> HtmlDocument document = new HtmlDocument( ); document.Load(responseStream, Encoding.UTF8); WebtoonDetailPageInformations dataStruct = new WebtoonDetailPageInformations( ); HtmlNode webtoonDetailPageTitle = document.DocumentNode.SelectSingleNode("//meta[@property=\"og:title\"]"); // 웹툰 화 제목 찾기 -> title HtmlNode webtoonDetailPageThumbnail = document.DocumentNode.SelectSingleNode("//meta[@property=\"og:image\"]"); // 웹툰 썸네일 찾기 -> thumbnail HtmlNode webtoonDetailContentImagesDIV = document.DocumentNode.SelectSingleNode("//div[@class=\"wt_viewer\"]"); // 웹툰 이미지 콘텐츠 찾기 -> contents HtmlNode webtoonCommentByAuthorDIV = document.DocumentNode.SelectSingleNode("//div[@class=\"writer_info\"]"); // 작가의 말 찾기 -> commentByAuthor if (webtoonDetailPageTitle != null) { Console.WriteLine(webtoonDetailPageTitle.GetAttributeValue("content", "")); dataStruct.title = webtoonDetailPageTitle.GetAttributeValue("content", "").Trim( ); } if (webtoonDetailPageThumbnail != null) { Console.WriteLine(webtoonDetailPageThumbnail.GetAttributeValue("content", "")); dataStruct.thumbnail = webtoonDetailPageThumbnail.GetAttributeValue("content", "").Trim( ); } if (webtoonDetailContentImagesDIV != null) { dataStruct.contents = new List <string>( ); foreach (HtmlNode i in webtoonDetailContentImagesDIV.ChildNodes) { if (i.Name == "img") { Console.WriteLine(i.GetAttributeValue("src", "")); dataStruct.contents.Add(i.GetAttributeValue("src", "").Trim( )); //break; } } } if (webtoonCommentByAuthorDIV != null) { foreach (HtmlNode i in webtoonCommentByAuthorDIV.ChildNodes) { if (i.Name == "p") { Console.WriteLine(i.InnerText); dataStruct.commentByAuthor = i.InnerText.Trim( ); break; } } } return(""); //} } } } catch (Exception ex) { Console.WriteLine(ex); return(""); } }