public static MangaCategoryListVM GetMangaCategoryList(MangaCategorySourceType sourceType, string category, int page) { MangaCategoryListVM ret = new MangaCategoryListVM(); switch (sourceType) { case MangaCategorySourceType.憨憨漫画: ret = GetManageCategoryListHanhan(category.Split(','), page); break; } return(ret); }
private static MangaCategoryListVM GetManageCategoryListHanhan(string[] category, int page) { MangaCategoryListVM ret = new MangaCategoryListVM(); ret.Mangas = new List <MangaCategoryListItem>(); ret.CurrentPage = page; var urlPrefix = "http://www.hanhande.net/"; var url = "list"; var searchUrl = ""; if (category.Length == 1 && string.IsNullOrEmpty(category[0])) { url += "_" + page + "/"; } else { url += "/" + string.Join("-", category) + "/" + page + "/"; } searchUrl = urlPrefix + url; var htmlRet = HtmlManager.GetHtmlWebClient("http://www.hanhan.net", searchUrl); if (htmlRet.Success) { try { HtmlDocument document = new HtmlDocument(); document.LoadHtml(htmlRet.Content); var listPath = "//li[@class='item-lg']"; var pagePath = "//li[@class='last']"; var listNodes = document.DocumentNode.SelectNodes(listPath); var pageNode = document.DocumentNode.SelectSingleNode(pagePath); if (pageNode != null && pageNode.ChildNodes.FindFirst("a") != null) { int total = -1; int.TryParse(pageNode.ChildNodes.FindFirst("a").Attributes["data-page"].Value.Trim(), out total); ret.TotalPage = total + 1; } if (listNodes != null) { foreach (var node in listNodes) { var aTag = node.ChildNodes.FindFirst("a"); if (aTag != null) { MangaCategoryListItem temp = new MangaCategoryListItem(); temp.MangaUrl = aTag.Attributes["href"].Value.Trim(); temp.MangaName = aTag.Attributes["title"].Value.Trim(); foreach (var subNode in aTag.ChildNodes) { if (subNode.Name == "img") { temp.PicUrl = subNode.Attributes["src"].Value.Trim(); } if (subNode.Name == "span" && subNode.Attributes["class"].Value.Trim() == "fd") { temp.IsFinished = true; } if (subNode.Name == "span" && subNode.Attributes["class"].Value.Trim() == "tt") { temp.UpdateInfo = subNode.InnerHtml.Trim(); } } foreach (var subNode in node.ChildNodes) { DateTime updateDate = DateTime.Now; if (subNode.Name == "span" && subNode.Attributes["class"].Value.Trim() == "updateon") { DateTime.TryParse(subNode.InnerHtml.Substring(subNode.InnerHtml.IndexOf(":") + 1, subNode.InnerHtml.IndexOf(" ")), out updateDate); temp.UpdateDate = updateDate; } } ret.Mangas.Add(temp); } } } } catch (Exception e) { ret.MsgCode = VMCode.Exception; ret.Msg = e.ToString(); } } else { ret.MsgCode = VMCode.Error; ret.Msg = "网页获取失败"; } ret.PageSize = ret.Mangas.Count; return(ret); }