Esempio n. 1
0
        public override Queue <BasicComicInfo> GetTopComic(string response)
        {
            Queue <BasicComicInfo> queue;

            queue = new Queue <BasicComicInfo>();
            HtmlNode mainNode = GetMainNode(response);

            if (mainNode == null || response == "")
            {
                return(queue);
            }

            BasicComicInfo     comicInfo;
            HtmlNodeCollection collect = mainNode.SelectNodes("//div[@class='cTabHotHtmHide']/li");

            foreach (HtmlNode nodeTemp in collect)
            {
                comicInfo             = new BasicComicInfo();
                comicInfo.ComicHref   = hostName + nodeTemp.SelectSingleNode("./a").Attributes["href"].Value;
                comicInfo.ComicName   = nodeTemp.SelectSingleNode("./a").Attributes["title"].Value;
                comicInfo.ComicImgUrl = nodeTemp.SelectSingleNode("./a/img").Attributes["src"].Value;
                queue.Enqueue(comicInfo);
            }

            return(queue);
        }
Esempio n. 2
0
        public override SearchResult GetSearchComic(string response)
        {
            SearchResult   searchResult;
            BasicComicInfo basicComicInfo;

            searchResult = new SearchResult();
            HtmlNode mainNode            = GetMainNode(response);
            Queue <BasicComicInfo> queue = new Queue <BasicComicInfo>();

            searchResult.SearchQueue = queue;

            if (response == "")
            {
                return(searchResult);
            }

            HtmlNodeCollection nodeCollect = mainNode.SelectNodes("//ul[@class='list_con_li update_con autoHeight']/li");

            if (nodeCollect != null)
            {
                foreach (HtmlNode node in nodeCollect)
                {
                    basicComicInfo             = new BasicComicInfo();
                    basicComicInfo.ComicHref   = node.SelectSingleNode("./a").Attributes["href"].Value;
                    basicComicInfo.ComicName   = node.SelectSingleNode("./a").Attributes["title"].Value;
                    basicComicInfo.ComicImgUrl = node.SelectSingleNode("./a/img").Attributes["src"].Value;
                    queue.Enqueue(basicComicInfo);
                }
            }

            string key = "";

            nodeCollect = mainNode.SelectNodes("//ul[@class='pagination']/li/a");

            if (nodeCollect != null)
            {
                Dictionary <string, string> dict = new Dictionary <string, string>();

                foreach (HtmlNode temp in nodeCollect)
                {
                    key = temp.InnerText;

                    if (dict.ContainsKey(key) == false)
                    {
                        dict.Add(key, hostName + temp.Attributes["href"].Value);
                    }
                }

                if (dict.ContainsKey("下一页"))
                {
                    searchResult.NextPageUrl = dict["下一页"];
                }
            }


            int num = Convert.ToInt32(mainNode.SelectSingleNode("//em[@class='c_6']").InnerText);

            searchResult.Count = num;
            return(searchResult);
        }
Esempio n. 3
0
        public override SearchResult GetSearchComic(string response)//给出搜索漫画结果
        {
            BasicComicInfo         comicInfo;
            SearchResult           result = new SearchResult();
            Queue <BasicComicInfo> queue  = new Queue <BasicComicInfo>();

            Regex[] regex = new Regex[3];
            regex[0] = new Regex(@"(?<count>\d+)</\w+>\s*本相关漫画");
            regex[1] = new Regex(@"img\salt='(?<title>[\w\s,。!]*)?(<font\s*color=red>)?\s*(?<title1>[\w\s,。!]*)?(</font>)?(?<title2>\w+)?'\s*src='(?<url>[\w./:-]*)'></div>\s*<div\s*class='cListTitle'>\s*<a\s*target='_blank'\s*href='(?<href>[\w-/]*)'");
            regex[2] = new Regex(@"");//下一页

            foreach (Match macth in regex[1].Matches(response))
            {
                comicInfo             = new BasicComicInfo();
                comicInfo.ComicHref   = hostName + macth.Groups["href"].Value;
                comicInfo.ComicName   = macth.Groups["title"].Value + macth.Groups["title1"].Value + macth.Groups["title2"].Value;
                comicInfo.ComicImgUrl = macth.Groups["url"].Value;
                queue.Enqueue(comicInfo);
            }

            var count = regex[0].Match(response).Groups["count"].Value;

            if (count != "")
            {
                result.Count = Convert.ToInt32(count);
            }
            else
            {
                result.Count = 0;
            }

            result.SearchQueue = queue;
            return(result);
        }
Esempio n. 4
0
        public override Queue <BasicComicInfo> GetTopComic(string response)
        {
            string                 title = "";
            string                 href  = "";
            string                 url   = "";
            BasicComicInfo         basicCominfo;
            Queue <BasicComicInfo> queue    = new Queue <BasicComicInfo>();
            HtmlDocument           document = new HtmlDocument();

            document.LoadHtml(response);
            HtmlNodeCollection collect = document.DocumentNode.SelectNodes("//div[@class='cHpComic']");

            foreach (var i in collect)
            {
                basicCominfo             = new BasicComicInfo();
                title                    = i.SelectSingleNode("./a[@target='_blank']").Attributes["title"].Value;
                href                     = i.SelectSingleNode("./a[@target='_blank']").Attributes["href"].Value;
                url                      = i.SelectSingleNode("./a/img").Attributes["src"].Value;
                basicCominfo.ComicName   = title;
                basicCominfo.ComicImgUrl = url;
                basicCominfo.ComicHref   = hostName + href;
                queue.Enqueue(basicCominfo);
            }

            return(queue);
        }
Esempio n. 5
0
        public override Queue <BasicComicInfo> GetTopComic(string response)
        {
            Queue <BasicComicInfo> queue = new Queue <BasicComicInfo>();
            HtmlNode           mainNode  = GetMainNode(response);
            HtmlNode           node      = mainNode.SelectSingleNode("//ul[@class='list_con_li clearfix']");
            HtmlNodeCollection collect   = node.SelectNodes("./li");

            if (collect == null)
            {
                return(queue);
            }

            BasicComicInfo comicInfo;

            foreach (HtmlNode nodeTemp in collect)
            {
                comicInfo             = new BasicComicInfo();
                comicInfo.ComicHref   = nodeTemp.SelectSingleNode("./a").Attributes["href"].Value;
                comicInfo.ComicName   = nodeTemp.SelectSingleNode("./a/img").Attributes["alt"].Value;
                comicInfo.ComicImgUrl = nodeTemp.SelectSingleNode("./a/img").Attributes["src"].Value;
                queue.Enqueue(comicInfo);
            }

            return(queue);
        }
Esempio n. 6
0
        public override Queue <BasicComicInfo> GetTopComic(string response)
        {
            HtmlDocument           doc;
            BasicComicInfo         comicInfo;
            Queue <BasicComicInfo> queue;

            doc   = new HtmlDocument();
            queue = new Queue <BasicComicInfo>();
            doc.LoadHtml(response);

            HtmlNodeCollection collection = doc.DocumentNode.SelectNodes("//div[@class='itemBox']/div[@class='itemImg']");

            if (collection == null)
            {
                return(queue);
            }

            foreach (HtmlNode node in collection)
            {
                comicInfo             = new BasicComicInfo();
                comicInfo.ComicHref   = node.SelectSingleNode("./a").Attributes["href"].Value;
                comicInfo.ComicName   = node.SelectSingleNode("./a/mip-img").Attributes["alt"].Value;
                comicInfo.ComicImgUrl = node.SelectSingleNode("./a/mip-img").Attributes["src"].Value;
                queue.Enqueue(comicInfo);
            }

            return(queue);
        }
Esempio n. 7
0
        public override CategoryCollect FindComicByCategory(string cateGoryStr)//实现漫画目录图片枚举
        {
            Regex           regex;
            BasicComicInfo  basic;
            CategoryCollect category   = new CategoryCollect();
            var             comicQueue = new Queue <BasicComicInfo>();
            HtmlDocument    document   = new HtmlDocument();

            document.LoadHtml(cateGoryStr);
            HtmlNode           node    = document.DocumentNode.SelectSingleNode("//div[@class='cComicList']");
            HtmlNodeCollection collect = node.SelectNodes("./li/a");

            foreach (var i in collect)
            {
                basic             = new BasicComicInfo();
                basic.ComicHref   = hostAttach + i.Attributes["href"].Value;
                basic.ComicName   = i.Attributes["title"].Value;
                basic.ComicImgUrl = i.SelectSingleNode("./img").Attributes["src"].Value;
                comicQueue.Enqueue(basic);
            }

            regex = new Regex(@"href='(?<href>[\w:/.]*)'>\s*下一页");//还可以修改,暂时不动
            category.NextPageUrl     = hostAttach + regex.Match(cateGoryStr).Groups["href"].Value;
            category.ComicQueue      = comicQueue;
            category.PagesCollection = new Dictionary <string, string>();
            return(category);
        }
Esempio n. 8
0
        public override SearchResult GetSearchComic(string response)
        {
            BasicComicInfo         comicInfo;
            SearchResult           result = new SearchResult();
            Queue <BasicComicInfo> queue  = new Queue <BasicComicInfo>();

            HtmlDocument document = new HtmlDocument();

            document.LoadHtml(response);
            HtmlNode           node    = document.DocumentNode.SelectSingleNode("//div[@class='cComicList']");
            HtmlNodeCollection collect = node.SelectNodes("./li/a");

            foreach (var i in collect)
            {
                comicInfo             = new BasicComicInfo();
                comicInfo.ComicHref   = hostAttach + i.Attributes["href"].Value;
                comicInfo.ComicName   = i.Attributes["title"].Value;
                comicInfo.ComicImgUrl = i.SelectSingleNode("./img").Attributes["src"].Value;
                queue.Enqueue(comicInfo);
            }

            result.Count       = queue.Count;
            result.SearchQueue = queue;
            result.NextPageUrl = "";
            return(result);
        }
Esempio n. 9
0
        public override Queue <BasicComicInfo> GetTopComic(string response)
        {
            string       temp;
            HtmlNode     node;
            HtmlDocument doc;

            doc = new HtmlDocument();
            doc.LoadHtml(response);
            Queue <BasicComicInfo> queue;
            BasicComicInfo         basicInfo;

            queue = new Queue <BasicComicInfo>();

            HtmlNodeCollection nodeCollect = doc.DocumentNode.SelectNodes("//div[@class='mh-item']");

            foreach (HtmlNode n in nodeCollect)
            {
                node = n.SelectSingleNode("./p[@class='mh-cover ']");
                if (node == null)
                {
                    continue;
                }
                temp                  = node.Attributes["style"].Value;
                basicInfo             = new BasicComicInfo();
                basicInfo.ComicImgUrl = temp.Substring(temp.IndexOf("(") + 1, temp.Length - temp.IndexOf("(") - 2);
                node                  = n.SelectSingleNode("./div[@class='mh-item-detali']");
                basicInfo.ComicName   = node.SelectSingleNode("./h2/a").Attributes["title"].Value;
                basicInfo.ComicHref   = hostAttach + node.SelectSingleNode("./h2/a").Attributes["href"].Value;
                queue.Enqueue(basicInfo);
            }
            return(queue);
        }
Esempio n. 10
0
        public override CategoryCollect FindComicByCategory(string cateGoryStr)//通过漫画分类获取漫画
        {
            var basicInfo    = new BasicComicInfo();
            var comicCollect = new CategoryCollect();
            var bookList     = AnalyseTool.GetTag(cateGoryStr, @"<div class=""book-list"">", "</div>");

            comicCollect.Count = 0;

            Regex regex      = new Regex(@"href=""(?<href>[/\w]*)""\stitle=""(?<title>[\w\&!!,s]*)""><img\s*(data-src|src)=""(?<url>[:\w./]*)""");
            var   comicQueue = new Queue <BasicComicInfo>();

            foreach (Match i in regex.Matches(bookList))
            {
                basicInfo             = new BasicComicInfo();
                basicInfo.ComicHref   = host + i.Groups["href"].Value;
                basicInfo.ComicName   = i.Groups["title"].Value;
                basicInfo.ComicImgUrl = i.Groups["url"].Value;
                comicQueue.Enqueue(basicInfo);
            }


            var pageInfo = AnalyseTool.GetTag(cateGoryStr, @"<div class=""pager-cont"">", "</div>");

            regex = new Regex(@"href=""(?<href>[/\w._]*)""\s*\w+=""[\w-:;]*"">下一页");
            comicCollect.NextPageUrl = homePage + regex.Match(cateGoryStr).Groups["href"].Value;
            comicCollect.Count       = comicQueue.Count;
            comicCollect.ComicQueue  = comicQueue;
            return(comicCollect);
        }
Esempio n. 11
0
        //需要修改路径和标签
        public override CategoryCollect FindComicByCategory(string cateGoryStr)
        {
            HtmlDocument           doc;
            HtmlNode               node;
            BasicComicInfo         basicInfo;
            HtmlNodeCollection     collect;
            CategoryCollect        cateCollect;
            Queue <BasicComicInfo> comicQueue;

            basicInfo   = null;
            doc         = new HtmlDocument();
            cateCollect = new CategoryCollect();
            comicQueue  = new Queue <BasicComicInfo>();
            doc.LoadHtml(cateGoryStr);

            collect = doc.DocumentNode.SelectNodes("//ul[@class='liemh htmls indliemh']/li");

            foreach (HtmlNode temp in collect)
            {
                basicInfo             = new BasicComicInfo();
                node                  = temp.SelectSingleNode("./a");
                basicInfo.ComicName   = node.Attributes["title"].Value;
                basicInfo.ComicHref   = node.Attributes["href"].Value;
                basicInfo.ComicImgUrl = temp.SelectSingleNode("./a/img").Attributes["src"].Value;
                comicQueue.Enqueue(basicInfo);
            }

            node = doc.DocumentNode.SelectSingleNode("//div[@class='pagination-wrapper']");
            cateCollect.NextPageUrl = hostName + node.SelectNodes("./a[@class='next']")[0].Attributes["href"].Value;
            cateCollect.Count       = comicQueue.Count;
            cateCollect.ComicQueue  = comicQueue;
            return(cateCollect);
        }
Esempio n. 12
0
        public override Queue <BasicComicInfo> GetTopComic(string response)
        {
            HtmlDocument                doc;
            HtmlNodeCollection          tempCollect;
            BasicComicInfo              basic = null;
            Queue <BasicComicInfo>      queue = null;
            Dictionary <string, string> dict;

            doc   = new HtmlDocument();
            dict  = new Dictionary <string, string>();
            queue = new Queue <BasicComicInfo>();
            doc.LoadHtml(response);
            HtmlNodeCollection collect = doc.DocumentNode.SelectNodes("//ul[@class='liemh indliemh']");

            foreach (HtmlNode node in collect)
            {
                tempCollect = node.SelectNodes("./li/a");

                foreach (HtmlNode node1 in tempCollect)
                {
                    if (dict.ContainsKey(node1.Attributes["title"].Value) == false)
                    {
                        basic             = new BasicComicInfo();
                        basic.ComicHref   = node1.Attributes["href"].Value;
                        basic.ComicName   = node1.Attributes["title"].Value;
                        basic.ComicImgUrl = node1.SelectSingleNode("./img").Attributes["src"].Value;
                        queue.Enqueue(basic);
                    }
                }
            }
            return(queue);
        }
Esempio n. 13
0
        public override Queue <BasicComicInfo> GetTopComic(string response)
        {
            Queue <BasicComicInfo> comicQueue;
            BasicComicInfo         basic;

            comicQueue = new Queue <BasicComicInfo>();
            response   = AnalyseTool.GetTag(response, @"<div class=""cmt-cont cf""", "</div>");
            var             pattern      = @"href=""(?<href>[/\w]*)""\s*title=""(?<title>[\w\s;!♀♂&【】&]*)""><img\s*(src|data-src)=""(?<url>[:\w/.]*)""";
            Regex           regex        = new Regex(pattern);
            MatchCollection matchCollect = regex.Matches(response);

            var count = 0;

            foreach (Match i in matchCollect)
            {
                basic             = new BasicComicInfo();
                basic.ComicName   = i.Groups["title"].Value;
                basic.ComicImgUrl = i.Groups["url"].Value;
                basic.ComicHref   = host + i.Groups["href"].Value;
                comicQueue.Enqueue(basic);
                count++;
            }

            return(comicQueue);
        }
Esempio n. 14
0
        public override SearchResult GetSearchComic(string response)
        {
            BasicComicInfo         comicInfo;
            SearchResult           result = new SearchResult();
            Queue <BasicComicInfo> queue  = new Queue <BasicComicInfo>();

            Regex[] regex = new Regex[2];
            regex[0] = new Regex(@"找到\s*(<\w+>)?(?<count>\d+)");
            regex[1] = new Regex(@"<a\sclass=""bcover""\s*href=""(?<href>[\w/_-]*)""\s*title=""(?<title>[\:\w\s\[\]\!\。\、\-\—\~\(\)\!]*)"">\s*<img\s*src=""(?<url>[\w\s/:.]*)""");
            var count = regex[0].Match(response).Groups["count"].Value;

            result.Count = Convert.ToInt32(count);

            foreach (Match match in regex[1].Matches(response))
            {
                comicInfo             = new BasicComicInfo();
                comicInfo.ComicHref   = homePage + match.Groups["href"].Value;
                comicInfo.ComicImgUrl = match.Groups["url"].Value;
                comicInfo.ComicName   = match.Groups["title"].Value;
                queue.Enqueue(comicInfo);
            }

            result.SearchQueue = queue;
            return(result);
        }
Esempio n. 15
0
        public override SearchResult GetSearchComic(string response)
        {
            BasicComicInfo     comicInfo;
            SearchResult       result      = new SearchResult();
            HtmlNode           mainNode    = GetMainNode(response);
            HtmlNodeCollection nodeCollect = mainNode.SelectNodes("//div[@class='mh-item-detali']/h2/a");

            result.SearchQueue = new Queue <BasicComicInfo>();
            result.Count       = 0;

            if (nodeCollect == null)
            {
                return(result);
            }

            foreach (HtmlNode node in nodeCollect)
            {
                comicInfo             = new BasicComicInfo();
                comicInfo.ComicHref   = host + node.Attributes["href"].Value;
                comicInfo.ComicImgUrl = mainNode.SelectSingleNode("//img[@class='mh-cover']").Attributes["src"].Value;
                comicInfo.ComicName   = node.Attributes["title"].Value;
                result.SearchQueue.Enqueue(comicInfo);
            }


            result.Count = result.SearchQueue.Count;
            return(result);
        }
Esempio n. 16
0
        public override CategoryCollect FindComicByCategory(string cateGoryStr)
        {
            string         tempStr = "";
            HtmlDocument   doc;
            HtmlNode       node;
            BasicComicInfo basic;
            Dictionary <string, string> dict;
            Queue <BasicComicInfo>      queue;
            CategoryCollect             collectInfo;

            queue       = new Queue <BasicComicInfo>();
            collectInfo = new CategoryCollect();
            doc         = new HtmlDocument();
            doc.LoadHtml(cateGoryStr);
            HtmlNodeCollection collect = doc.DocumentNode.SelectNodes("//div[@class='box-body']/ul[@class='mh-list col7']/li/div[@class='mh-item']");


            foreach (HtmlNode temp in collect)
            {
                basic             = new BasicComicInfo();
                node              = temp.SelectSingleNode("./div[@class='mh-item-detali']/h2[@class='title']/a");
                basic.ComicName   = node.Attributes["title"].Value;
                basic.ComicHref   = hostAttach + node.Attributes["href"].Value;
                node              = temp.SelectSingleNode("./p[@class='mh-cover']");
                tempStr           = node.Attributes["style"].Value;
                basic.ComicImgUrl = tempStr.Substring(tempStr.IndexOf("(") + 1, tempStr.IndexOf(")") - tempStr.IndexOf("(") - 1);
                queue.Enqueue(basic);
            }

            node    = doc.DocumentNode.SelectSingleNode("//div[@class='page-pagination pull-right mt20']");
            collect = node.SelectNodes("./ul/li/a");
            dict    = new Dictionary <string, string>();
            var count = 0;
            var index = 0;

            foreach (HtmlNode temp in collect)
            {
                count++;
                tempStr = temp.Attributes["data-index"].Value;

                if (dict.ContainsKey(tempStr) == false)
                {
                    dict.Add(tempStr, hostAttach + temp.Attributes["href"].Value);
                }

                if (temp.Attributes["class"] != null && temp.Attributes["class"].Value == "active")
                {
                    index = count;
                }
            }

            collectInfo.NextPageUrl     = dict[(index + 1).ToString()];
            collectInfo.ComicQueue      = queue;
            collectInfo.Count           = queue.Count;
            collectInfo.PagesCollection = dict;
            return(collectInfo);
        }
Esempio n. 17
0
        public virtual Queue <BasicComicInfo> GetTopComic(string response)//获取热门漫画
        {
            BasicComicInfo comicInfo;

            comicInfo = new BasicComicInfo();
            Queue <BasicComicInfo> queue = new Queue <BasicComicInfo>();

            return(queue);
        }
Esempio n. 18
0
        public override SearchResult GetSearchComic(string response)
        {
            BasicComicInfo     basic;
            SearchResult       result = new SearchResult();
            HtmlNodeCollection nodeCollect;
            HtmlDocument       doc;

            doc = new HtmlDocument();
            doc.LoadHtml(response);
            nodeCollect  = doc.DocumentNode.SelectNodes("//div[@class='mh-item']");
            result.Count = 0;

            string   strTemp;
            HtmlNode subNode;
            Queue <BasicComicInfo> queue;

            queue = new Queue <BasicComicInfo>();

            if (nodeCollect == null)
            {
                return(result);
            }

            subNode      = doc.DocumentNode.SelectSingleNode("//header[@class='box-header']");
            strTemp      = subNode.SelectSingleNode("./h1/span").InnerText;
            strTemp      = Regex.Match(strTemp, @"\d+").Value;
            result.Count = Convert.ToInt32(strTemp);

            foreach (HtmlNode temp in nodeCollect)
            {
                basic             = new BasicComicInfo();
                strTemp           = temp.SelectSingleNode("./p").Attributes["style"].Value;
                basic.ComicImgUrl = strTemp.Substring(strTemp.IndexOf("(") + 1, strTemp.Length - strTemp.IndexOf("(") - 2);
                subNode           = temp.SelectSingleNode("./div/h2/a");
                basic.ComicName   = subNode.Attributes["title"].Value;
                basic.ComicHref   = hostAttach + subNode.Attributes["href"].Value;
                queue.Enqueue(basic);
            }

            nodeCollect = doc.DocumentNode.SelectNodes("//div[@class='page-pagination pull-right mt20']/ul/li/a");
            int index = 0;

            foreach (HtmlNode temp in nodeCollect)
            {
                if (temp.Attributes["class"] != null && temp.Attributes["class"].Value == "active")
                {
                    result.NextPageUrl = hostAttach + nodeCollect[++index].Attributes["href"].Value;
                    break;
                }

                index++;
            }

            result.SearchQueue = queue;
            return(result);
        }
Esempio n. 19
0
        public override CategoryCollect FindComicByCategory(string cateGoryStr)
        {
            HtmlDocument           doc;
            HtmlNode               node;
            BasicComicInfo         basicInfo;
            HtmlNodeCollection     collect;
            CategoryCollect        cateCollect;
            Queue <BasicComicInfo> comicQueue;

            basicInfo   = null;
            doc         = new HtmlDocument();
            cateCollect = new CategoryCollect();
            comicQueue  = new Queue <BasicComicInfo>();
            doc.LoadHtml(cateGoryStr);

            collect = doc.DocumentNode.SelectNodes("//div[@class='recommendedpic allfloatleft']");
            if (collect == null)
            {
                collect = doc.DocumentNode.SelectNodes("//div[@class='recommendedpicl center']");
            }

            foreach (HtmlNode temp in collect)
            {
                basicInfo             = new BasicComicInfo();
                node                  = temp.SelectSingleNode("./a");
                basicInfo.ComicName   = node.Attributes["title"].Value;
                basicInfo.ComicHref   = node.Attributes["href"].Value;
                basicInfo.ComicImgUrl = hostName + temp.SelectSingleNode("./a/img").Attributes["src"].Value;
                comicQueue.Enqueue(basicInfo);
            }

            string   href     = "";
            HtmlNode hrefNode = doc.DocumentNode.SelectSingleNode("//div[@class='gray reminderguild']");

            Regex regex     = new Regex(@"href=""(?<href>[\w_\.]*)""\s*title=""下一页""");
            Regex regexhref = new Regex(@"href=""(?<href>[\w\-\./]*)""\s*target=""_self"">全部");

            if (hrefNode != null)
            {
                href = regexhref.Match(hrefNode.OuterHtml).Groups["href"].Value;
                href = href.Substring(0, href.LastIndexOf("/")) + "/";
                cateCollect.NextPageUrl = hostName + href + regex.Match(cateGoryStr).Groups["href"].Value;
            }
            else
            {
                cateCollect.NextPageUrl = "http://www.dmzx.com/zuixin/";
            }

            cateCollect.Count      = comicQueue.Count;
            cateCollect.ComicQueue = comicQueue;
            return(cateCollect);
        }
Esempio n. 20
0
        public Queue <BasicComicInfo> AnalyseURL(string response, string express)
        {
            Regex                  regex = new Regex(express);
            BasicComicInfo         basic = new BasicComicInfo();
            Queue <BasicComicInfo> queue = new Queue <BasicComicInfo>();
            MatchCollection        match = regex.Matches(response);

            foreach (Match i in match)
            {
                basic             = new BasicComicInfo();
                basic.ComicImgUrl = i.Groups["url"].Value;
                basic.ComicName   = i.Groups["data1"].Value + i.Groups["data2"].Value + i.Groups["data3"].Value;
                basic.ComicHref   = hostName + i.Groups["href"].Value;
                queue.Enqueue(basic);
            }

            return(queue);
        }
Esempio n. 21
0
        public override SearchResult GetSearchComic(string response)
        {
            SearchResult           result = new SearchResult();
            HtmlDocument           doc    = new HtmlDocument();
            Queue <BasicComicInfo> queue;

            queue = new Queue <BasicComicInfo>();
            doc.LoadHtml(response);
            BasicComicInfo     info;
            HtmlNodeCollection collect = doc.DocumentNode.SelectNodes("//ul[@class='liemh htmls indliemh']/li");

            if (collect == null)
            {
                return(result);
            }

            foreach (HtmlNode node in collect)
            {
                info             = new BasicComicInfo();
                info.ComicHref   = node.SelectSingleNode("./a").Attributes["href"].Value;
                info.ComicName   = node.SelectSingleNode("./a").Attributes["title"].Value;
                info.ComicImgUrl = node.SelectSingleNode("./a/img").Attributes["src"].Value;
                queue.Enqueue(info);
            }

            HtmlNode nodeTemp = doc.DocumentNode.SelectSingleNode("//div[@class='position']");
            Regex    regex    = new Regex(@"(?<data>\d+)");

            result.Count = Convert.ToInt32(regex.Match(nodeTemp.InnerText).Groups["data"].Value);

            collect = doc.DocumentNode.SelectNodes("//a[@class='next']");

            if (collect != null)
            {
                result.NextPageUrl = hostName + collect[0].Attributes["href"].Value;
            }
            else
            {
                result.NextPageUrl = "";
            }

            result.SearchQueue = queue;
            return(result);
        }
Esempio n. 22
0
        public override CategoryCollect FindComicByCategory(string response)
        {
            HtmlDocument                doc;
            CategoryCollect             cateInfo;
            Queue <BasicComicInfo>      queue;
            Dictionary <string, string> pageDict;

            doc      = new HtmlDocument();
            cateInfo = new CategoryCollect();
            queue    = new Queue <BasicComicInfo>();
            doc.LoadHtml(response);
            BasicComicInfo     basicInfo  = null;
            HtmlNodeCollection collection = doc.DocumentNode.SelectNodes("//ul[@class='grid-row clearfix']/li | //ul[@class='grid-row clearfix first']/li");

            foreach (HtmlNode node in collection)
            {
                basicInfo             = new BasicComicInfo();
                basicInfo.ComicName   = node.SelectSingleNode("./p/a").InnerText;
                basicInfo.ComicHref   = node.SelectSingleNode("./p/a").Attributes["href"].Value;
                basicInfo.ComicImgUrl = node.SelectSingleNode("./a/img").Attributes["src"].Value;
                queue.Enqueue(basicInfo);
            }

            pageDict   = new Dictionary <string, string>();
            collection = doc.DocumentNode.SelectNodes("//ul[@class='pagination']/li/a");

            foreach (HtmlNode node in collection)
            {
                if (pageDict.ContainsKey(node.InnerText) == false)
                {
                    pageDict.Add(node.InnerText, hostName + node.Attributes["href"].Value);
                }
            }

            var temp        = doc.DocumentNode.SelectSingleNode("//div[@class='head']/span").InnerText;
            var currentPage = Convert.ToInt32(temp.Substring(0, temp.IndexOf("/")));

            cateInfo.ComicQueue      = queue;
            cateInfo.Count           = queue.Count;
            cateInfo.NextPageUrl     = pageDict[(currentPage + 1).ToString()];
            cateInfo.PagesCollection = pageDict;
            return(cateInfo);
        }
Esempio n. 23
0
        public override Queue<BasicComicInfo> GetTopComic(string response)//实现热门
        {
            BasicComicInfo basic = null;
            Queue<BasicComicInfo> queue = new Queue<BasicComicInfo>();
            HtmlDocument document = new HtmlDocument();
            document.LoadHtml(response);
            HtmlNode node = document.DocumentNode.SelectSingleNode("//div[@class='cComicHot']");
            HtmlNodeCollection collect = node.SelectNodes("./div/li/a");

            foreach (var i in collect)
            {              
                basic = new BasicComicInfo();
                basic.ComicHref = hostAttach + i.Attributes["href"].Value;
                basic.ComicName = i.Attributes["title"].Value;
                basic.ComicImgUrl = i.SelectSingleNode("./img").Attributes["src"].Value;
                queue.Enqueue(basic);
            }

            return queue;
        }
Esempio n. 24
0
        public override Queue <BasicComicInfo> GetTopComic(string response)//实现热门
        {
            BasicComicInfo         basicComicInfo;
            HtmlNode               mainNode = GetMainNode(response);
            Queue <BasicComicInfo> queue    = new Queue <BasicComicInfo>();
            HtmlNodeCollection     nodes    = mainNode.SelectNodes("//div[@class='index-manga-item']");

            if (nodes != null)
            {
                foreach (HtmlNode temp in nodes)
                {
                    basicComicInfo             = new BasicComicInfo();
                    basicComicInfo.ComicHref   = host + temp.SelectSingleNode("./a").Attributes["href"].Value;
                    basicComicInfo.ComicName   = temp.SelectSingleNode("./p/a").InnerText;
                    basicComicInfo.ComicImgUrl = temp.SelectSingleNode("./a/img").Attributes["src"].Value;
                    queue.Enqueue(basicComicInfo);
                }
            }
            return(queue);
        }
Esempio n. 25
0
        public override Queue <BasicComicInfo> GetTopComic(string response)
        {
            HtmlDocument           doc;
            Queue <BasicComicInfo> queue;
            BasicComicInfo         basicInfo;

            doc   = new HtmlDocument();
            queue = new Queue <BasicComicInfo>();
            doc.LoadHtml(response);
            HtmlNodeCollection collect = doc.DocumentNode.SelectNodes("//a[@class='cover']");

            foreach (HtmlNode tempNode in collect)
            {
                basicInfo             = new BasicComicInfo();
                basicInfo.ComicHref   = tempNode.Attributes["href"].Value;
                basicInfo.ComicName   = tempNode.Attributes["title"].Value;
                basicInfo.ComicImgUrl = tempNode.SelectSingleNode("./img").Attributes["src"].Value;
                queue.Enqueue(basicInfo);
            }

            return(queue);
        }
Esempio n. 26
0
        public override Queue <BasicComicInfo> GetTopComic(string response)
        {
            HtmlNode     node;
            HtmlDocument doc = new HtmlDocument();

            doc.LoadHtml(response);
            BasicComicInfo         basic = null;
            Queue <BasicComicInfo> queue;

            queue = new Queue <BasicComicInfo>();
            HtmlNodeCollection collect = doc.DocumentNode.SelectNodes("//div[@class='picbox']");

            if (collect == null)
            {
                return(queue);
            }

            foreach (HtmlNode temp in collect)
            {
                basic           = new BasicComicInfo();
                node            = temp.SelectSingleNode("./a");
                basic.ComicName = node.Attributes["title"].Value;
                basic.ComicHref = node.Attributes["href"].Value;
                node            = node.SelectSingleNode("./img");

                if (node.Attributes["data-original"] == null)
                {
                    continue;
                }

                basic.ComicImgUrl = hostName + node.Attributes["data-original"].Value;
                queue.Enqueue(basic);
            }

            return(queue);
        }
Esempio n. 27
0
        public override CategoryCollect FindComicByCategory(string cateGoryStr)
        {
            CategoryCollect cateCollect = new CategoryCollect();
            var             dat         = AnalyseTool.GetTag(cateGoryStr, @"<div class=""cComicList""", @"<div class=""cComicPageChange2");
            Regex           regex       = new Regex(@"href=['""](?<href>[/\w-]*)['""]\s*class=['""][\w_]*['""]\stitle=['""](?<title>[\w-!!\s,。]*)['""]><img\salt=['""][\w-!,。\s,]*['""]\s*src=['""](?<url>[\w:/.-]*)");
            var             basicInfo   = new BasicComicInfo();
            var             comicQueue  = new Queue <BasicComicInfo>();

            foreach (Match i in regex.Matches(dat))
            {
                basicInfo             = new BasicComicInfo();
                basicInfo.ComicHref   = hostName + i.Groups["href"].Value;
                basicInfo.ComicName   = i.Groups["title"].Value;
                basicInfo.ComicImgUrl = i.Groups["url"].Value;
                comicQueue.Enqueue(basicInfo);
            }

            dat   = AnalyseTool.GetTag(cateGoryStr, "<span class='cPageChangeLink'>", "</span>");
            regex = new Regex(@"<a\s*href='(?<url>[\w-/]*)'>下一页");
            cateCollect.NextPageUrl     = hostName + regex.Match(dat).Groups["url"].Value;
            cateCollect.ComicQueue      = comicQueue;
            cateCollect.PagesCollection = new Dictionary <string, string>();
            return(cateCollect);
        }
Esempio n. 28
0
        public override CategoryCollect FindComicByCategory(string cateGoryStr)
        {
            HtmlDocument           doc;
            HtmlNode               node;
            HtmlNodeCollection     nodeCollect;
            CategoryCollect        collect;
            BasicComicInfo         basicInfo = null;
            Queue <BasicComicInfo> queue;

            queue   = new Queue <BasicComicInfo>();
            collect = new CategoryCollect();
            doc     = new HtmlDocument();

            doc.LoadHtml(cateGoryStr);
            nodeCollect = doc.DocumentNode.SelectNodes("//div[@class='nag cf']/div/div/a");

            foreach (HtmlNode temp in nodeCollect)
            {
                node                  = temp.SelectSingleNode("./span/img");
                basicInfo             = new BasicComicInfo();
                basicInfo.ComicHref   = temp.Attributes["href"].Value;
                basicInfo.ComicName   = temp.Attributes["title"].Value;
                basicInfo.ComicImgUrl = node.Attributes["src"].Value;
                queue.Enqueue(basicInfo);
            }

            collect.ComicQueue = queue;
            collect.Count      = queue.Count;
            node = doc.DocumentNode.SelectSingleNode("//a[@class='nextpostslink']");
            if (node != null)
            {
                collect.NextPageUrl = node.Attributes["href"].Value;
            }

            return(collect);
        }
Esempio n. 29
0
        public override CategoryCollect FindComicByCategory(string cateGoryStr)
        {
            CategoryCollect        cateCollect = new CategoryCollect();
            Queue <BasicComicInfo> queue       = new Queue <BasicComicInfo>();
            HtmlNode mainNode = GetMainNode(cateGoryStr);

            cateCollect.ComicQueue = queue;
            HtmlNode node = mainNode.SelectSingleNode("//ul[@class='list_con_li clearfix']");

            if (node == null)
            {
                return(cateCollect);
            }

            HtmlNodeCollection collect = node.SelectNodes("./li");

            if (collect == null)
            {
                return(cateCollect);
            }

            BasicComicInfo comicInfo;

            foreach (HtmlNode nodeTemp in collect)
            {
                comicInfo             = new BasicComicInfo();
                comicInfo.ComicHref   = nodeTemp.SelectSingleNode("./a").Attributes["href"].Value;
                comicInfo.ComicName   = nodeTemp.SelectSingleNode("./a/img").Attributes["alt"].Value;
                comicInfo.ComicImgUrl = nodeTemp.SelectSingleNode("./a/img").Attributes["src"].Value;
                queue.Enqueue(comicInfo);
            }

            int    count = 0;
            string key   = "";

            node    = mainNode.SelectSingleNode("//span[@class='comi_num']/em");
            count   = Convert.ToInt32(node.InnerText);
            collect = mainNode.SelectNodes("//ul[@class='pagination']/li/a");
            cateCollect.PagesCollection = new Dictionary <string, string>();

            if (collect != null)
            {
                foreach (HtmlNode temp in collect)
                {
                    key = temp.InnerText;

                    if (cateCollect.PagesCollection.ContainsKey(key) == false)
                    {
                        cateCollect.PagesCollection.Add(key, hostName + temp.Attributes["href"].Value);
                    }
                }

                if (cateCollect.PagesCollection.ContainsKey("下一页"))
                {
                    cateCollect.NextPageUrl = cateCollect.PagesCollection["下一页"];
                }
            }



            return(cateCollect);
        }
Esempio n. 30
0
        public override CategoryCollect FindComicByCategory(string cateGoryStr)
        {
            CategoryCollect collect;
            BasicComicInfo  basicComicInfo;

            collect = new CategoryCollect();
            HtmlNode mainNode = GetMainNode(cateGoryStr);

            Queue <BasicComicInfo> queue = new Queue <BasicComicInfo>();
            HtmlNodeCollection     nodes = mainNode.SelectNodes("//div[@class='mh-item']");

            if (nodes != null)
            {
                foreach (HtmlNode temp in nodes)
                {
                    basicComicInfo             = new BasicComicInfo();
                    basicComicInfo.ComicHref   = host + temp.SelectSingleNode("./a").Attributes["href"].Value;
                    basicComicInfo.ComicName   = temp.SelectSingleNode("./div/h2/a").InnerText;
                    basicComicInfo.ComicImgUrl = temp.SelectSingleNode("./a/img").Attributes["src"].Value;
                    queue.Enqueue(basicComicInfo);
                }
            }

            int curIndex = 0;
            int count    = 1;

            nodes = mainNode.SelectNodes("//div[@class='page-pagination']/ul/li");
            collect.PagesCollection = new Dictionary <string, string>();

            if (nodes != null)
            {
                foreach (HtmlNode temp in nodes)//这部分有问题,找不到page-pagination段
                {
                    if (!collect.PagesCollection.ContainsKey(temp.InnerText))
                    {
                        HtmlNode node = temp.SelectSingleNode("./a");

                        if (node.Attributes["class"] != null)
                        {
                            curIndex = count;
                        }

                        collect.PagesCollection.Add(node.InnerText, host + node.Attributes["href"].Value);
                        count++;
                    }
                }
            }

            collect.ComicTotalCount = queue.Count;
            collect.ComicQueue      = queue;

            if (curIndex - 1 > 0 && collect.Count > 0)
            {
                collect.LastPageUrl = collect.PagesCollection[(curIndex - 1).ToString()];
            }
            else
            {
                collect.LastPageUrl = collect.PagesCollection[(curIndex).ToString()];
            }

            if (curIndex + 1 < collect.PagesCollection.Count && collect.Count > 0)
            {
                collect.NextPageUrl = collect.PagesCollection[(curIndex + 1).ToString()];
            }
            else
            {
                collect.NextPageUrl = collect.PagesCollection[(collect.PagesCollection.Count - 1).ToString()];
            }


            return(collect);
        }