private List <PageMatch> GetPageMatchs(int pno) { List <PageMatch> ttt = new List <PageMatch>(); string url = string.Format(LolConfig.URL_MATCH_LIST, _servername, _playername, pno); string rhtml = Unity.HttpWebRequest.Get(url); var parser = Winista.Text.HtmlParser.Parser.CreateParser(rhtml, "utf8"); Winista.Text.HtmlParser.Filters.HasAttributeFilter tnf = new Winista.Text.HtmlParser.Filters.HasAttributeFilter(); tnf.AttributeName = "class"; tnf.AttributeValue = "l-box"; var divlist = parser.ExtractAllNodesThatMatch(tnf); if (divlist.Count > 0) { var matchs = divlist[0].FirstChild.Children; for (int i = 0; i < matchs.Count; i++) { Winista.Text.HtmlParser.ITag it = matchs[i] as Winista.Text.HtmlParser.ITag; if (it == null) { continue; } if (it.ToHtml().ToString() == "") { continue; } string matchid_html = it.GetAttribute("id"); if (matchid_html != null && matchid_html.StartsWith("cli")) { string matchid_str = matchid_html.Substring(3); for (int k = 0; k < matchs[i].Children.Count; k++) { var p_tag = matchs[i].Children[k] as Winista.Text.HtmlParser.ITag; if (p_tag == null || p_tag.ToHtml().Trim() == "") { continue; } if (p_tag.TagName == "P" && p_tag.GetAttribute("class") == "info") { for (int j = 0; j < matchs[i].Children[k].Children.Count; j++) { if (matchs[i].Children[k].Children[j].GetType() == typeof(Winista.Text.HtmlParser.Nodes.TextNode)) { string dtstr = matchs[i].Children[k].Children[j].ToPlainTextString().Replace(" ", "").Trim(); if (dtstr != "") { ttt.Add(new PageMatch() { matchid = matchid_str, time = dtstr }); break; } } } break; } } } } } return(ttt); }
public Models.Player GetUserInfo(string username) { string url = string.Format(LolConfig.URL_PLAY_DETAILS, _servername, username); string rhtml = Unity.HttpWebRequest.Get(url); var parser = Winista.Text.HtmlParser.Parser.CreateParser(rhtml, "utf8"); Winista.Text.HtmlParser.Filters.HasAttributeFilter tnf = new Winista.Text.HtmlParser.Filters.HasAttributeFilter("class", "intro"); var tb_a = parser.ExtractAllNodesThatMatch(tnf); if (tb_a.Count == 0) { return(null); } Winista.Text.HtmlParser.ITag T1 = null; Winista.Text.HtmlParser.ITag T2 = null; Winista.Text.HtmlParser.ITag T3 = null; for (int i = 0; i < tb_a[0].Children.Count; i++) { var tg = tb_a[0].Children[i] as Winista.Text.HtmlParser.ITag; if (tg == null) { continue; } if (tg.TagName == "DIV" && tg.GetAttribute("CLASS") == "avatar") { T1 = tg; continue; } if (tg.TagName == "DIV" && tg.GetAttribute("CLASS") == "text") { T2 = tg; continue; } if (tg.TagName == "DIV" && tg.GetAttribute("CLASS") == "fighting") { T3 = tg; continue; } } //deng ji int denji = 1; for (int i = 0; i < T1.Children.Count; i++) { //var tg = T1.Children[i] as Winista.Text.HtmlParser.ITag; //if (tg == null || tg.TagName != "EM") // continue; if (T1.Children[i].GetType() == typeof(Winista.Text.HtmlParser.Nodes.TextNode)) { if (T1.Children[i].ToPlainTextString().Trim() == "") { continue; } int.TryParse(T1.Children[i].ToPlainTextString().Trim(), out denji); break; } } int fighting = 0; DateTime uptime = DateTime.Parse("1900-1-1"); for (int i = 0; i < T3.Children.Count; i++) { var tg = T3.Children[i] as Winista.Text.HtmlParser.ITag; if (tg == null || tg.TagName != "P") { continue; } for (int k = 0; k < tg.Children.Count; k++) { var tg_k = tg.Children[k] as Winista.Text.HtmlParser.ITag; //if (tg_k == null || tg_k.TagName != "EM") // continue; //for (int j = 0; j < tg_k.Children.Count; j++) //{ // var tg_k_j = tg_k.Children[j] as Winista.Text.HtmlParser.ITag; // if (tg_k_j == null || tg_k_j.TagName != "SPAN") // continue; // DateTime.TryParse((tg_k_j.GetAttribute("title") ?? "").Replace("更新时间:", ""), out uptime); // int.TryParse(tg_k_j.ToPlainTextString().Trim(), out fighting); //} if (tg_k == null || tg_k.TagName != "SPAN") { continue; } var tg_k_j = tg_k; if (tg_k_j == null || tg_k_j.TagName != "SPAN") { continue; } DateTime.TryParse((tg_k_j.GetAttribute("title") ?? "").Replace("更新时间:", ""), out uptime); int.TryParse(tg_k_j.ToPlainTextString().Trim(), out fighting); } } Models.Player u = new Models.Player(); u.parentplayer = _playername; u.playername = username; u.fighting = fighting; u.level = denji; u.searchdeep = _searchdeep; u.servername = _servername; u.lastplaytime = uptime; return(u); }
public List <string> GetUsersFromTb(Winista.Text.HtmlParser.Util.NodeList nlist) { List <string> us = new List <string>(); if (nlist == null || nlist.Count == 0) { return(us); } Winista.Text.HtmlParser.INode tablenode = null; for (int i = 0; i < nlist[0].Children.Count; i++) { var tg = nlist[0].Children[i] as Winista.Text.HtmlParser.ITag; if (tg == null || tg.TagName != "TABLE") { continue; } tablenode = nlist[0].Children[i]; break; } if (tablenode == null) { return(us); } Winista.Text.HtmlParser.Util.NodeList trs = null; for (int i = 0; i < tablenode.Children.Count; i++) { var tg = tablenode.Children[i] as Winista.Text.HtmlParser.ITag; if (tg == null) { continue; } if (tg.TagName == "TBODY") { trs = tg.Children; break; } if (tg.TagName == "TR") { trs = tablenode.Children; break; } } if (trs == null || trs.Count == 0) { return(us); } for (int i = 0; i < trs.Count; i++) { var tg = trs[i] as Winista.Text.HtmlParser.ITag; if (tg == null || tg.TagName != "TR") { continue; } //get first td Winista.Text.HtmlParser.ITag firsttd = null; for (int k = 0; k < trs[i].Children.Count; k++) { var td_t = trs[i].Children[k] as Winista.Text.HtmlParser.ITag; if (td_t != null && td_t.TagName == "TD") { firsttd = td_t; break; } } if (firsttd == null) { continue; } //get div Winista.Text.HtmlParser.ITag td_div = null; for (int k = 0; k < firsttd.Children.Count; k++) { var td_t_div = firsttd.Children[k] as Winista.Text.HtmlParser.ITag; if (td_t_div != null && td_t_div.TagName == "DIV") { td_div = td_t_div; break; } } if (td_div == null) { continue; } //GET A Winista.Text.HtmlParser.ITag td_div_a = null; for (int k = 0; k < td_div.Children.Count; k++) { var td_t_div = td_div.Children[k] as Winista.Text.HtmlParser.ITag; if (td_t_div != null && td_t_div.TagName == "A") { td_div_a = td_t_div; break; } } if (td_div_a == null) { continue; } us.Add(td_div_a.ToPlainTextString().Trim()); } return(us); }