public IHtmlDocument Connect(WebClientEx wc, string playersLink) { ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; try { string source = wc.DownloadString(playersLink); if (source != null) { var parser = new HtmlParser(); return(parser.Parse(source)); } else { return(null); } } catch (System.Net.WebException e) { try { string start = "https://www.overbuff.com/players/pc/"; string afterTag = playersLink.Substring(playersLink.IndexOf('%')); int lenName = playersLink.Length - start.Length - afterTag.Length; string name = playersLink.Substring(start.Length, lenName); name = name[0].ToString().ToUpper() + name.Substring(1); playersLink = start + name + afterTag; string source = wc.DownloadString(playersLink); if (source != null) { var parser = new HtmlParser(); return(parser.Parse(source)); } else { return(null); } } catch (System.Net.WebException ee) { try { string start = "https://www.overbuff.com/players/pc/"; string afterTag = playersLink.Substring(playersLink.IndexOf('%')); int lenName = playersLink.Length - start.Length - afterTag.Length; string name = playersLink.Substring(start.Length, lenName); name = name.ToUpper(); playersLink = start + name + afterTag; string source = wc.DownloadString(playersLink); if (source != null) { var parser = new HtmlParser(); return(parser.Parse(source)); } else { return(null); } } catch (Exception eee) { return(null); } } } }
public void UpdateMercyAsync() { OwerParser pr = new OwerParser(); WebClientEx wc = new WebClientEx(); string nameNtag; Collection <Player> pls = new Collection <Player>(); using (FileStream fstream = new FileStream("nameNtags.txt", FileMode.Open)) { StreamReader fr = new StreamReader(fstream); while (!fr.EndOfStream) { nameNtag = fr.ReadLine(); string playersLink = "https://www.overbuff.com/players/pc/" + nameNtag.Replace('#', '-') + "?mode=competitive"; ///магия после того, как добавил эти две строки рейтинг обновился, но взоможно они ничего и не исправили, нужно тестить еще ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; var s = wc.DownloadString(playersLink); /// IHtmlDocument doc = pr.Connect(wc, playersLink); Player player = new Player(); player.Name = nameNtag.Substring(0, nameNtag.IndexOf('#')); player.Rate = pr.GetCompetetiveRate("div.layout-header-secondary dl dd span.color-stat-rating", doc).ToString(); player.WinRate = pr.GetWinRate("dl:nth-child(5)", doc).ToString(); Dictionary <string, string> dic = pr.GetHeroRank("div.group.special .stat:nth-child(1) .value span", "div.group.normal div.name a.color-white", doc); Collection <Hero> hers = new Collection <Hero>(); foreach (var itemdic in dic) { Hero her = new Hero(); her.Name = itemdic.Key.ToString(); her.WinRate = itemdic.Value; hers.Add(her); } player.Heroes = hers; pls.Add(player); } } var names = pls.Select(c => c.Name).ToArray(); var rates = pls.Select(c => c.Rate).ToArray(); for (int i = 0; i < names.Length; i++) { for (int j = 0; j < names.Length; j++) { if (Convert.ToInt32(rates[i]) > Convert.ToInt32(rates[j])) { var a = rates[i]; var b = names[i]; rates[i] = rates[j]; names[i] = names[j]; rates[j] = a; names[j] = b; } } } if (dataGridView1.ColumnCount < 1) { dataGridView1.Columns.Add("Рейтинг", "Рейтинг"); } if (names.Length > dataGridView1.Columns.Count - 1) { for (int i = 0; i < names.Count(); i++) { dataGridView1.Columns.Add(names[i], names[i]); dataGridView1.Rows.Add(); dataGridView1.Rows[i].HeaderCell.Value = names[i]; } } for (int j = 0; j < rates.Length; j++) { dataGridView1.Rows[j].Cells[0].Value = rates[j]; } for (int i = 0; i < rates.Length; i++) { for (int j = 1; j < rates.Length + 1; j++) { dataGridView1.Rows[i].Cells[j].Value = Math.Abs(Convert.ToInt32(rates[i]) - Convert.ToInt32(rates[j - 1])); if (Convert.ToInt32(dataGridView1.Rows[i].Cells[j].Value) < 500) { dataGridView1.Rows[i].Cells[j].Style.BackColor = Color.Green; } else { dataGridView1.Rows[i].Cells[j].Style.BackColor = Color.Red; } if (Convert.ToInt32(dataGridView1.Rows[i].Cells[j].Value) == 0) { dataGridView1.Rows[i].Cells[j].Style.BackColor = Color.Black; dataGridView1.Rows[i].Cells[j].Style.ForeColor = Color.Black; } } } }