/// <summary> /// Возвращает список проксей с сайта, который нам нашел поисковик /// </summary> /// <param name="_url"></param> /// <returns></returns> public static string[] GetProxys(string _url) { List <string> Prxs = new List <string>(); var browser = new AngleSharp.Html.Parser.HtmlParser(); string code = GetHtml(_url); if (code != "") { AngleSharp.Html.Dom.IHtmlDocument doc = browser.ParseDocument(code); var TRs = doc.GetElementsByTagName("TR"); foreach (var TR in TRs) { try { string tds = ""; var TDs = TR.GetElementsByTagName("TD"); foreach (var TD in TDs) { tds += " " + TD.TextContent + " "; } string tr = Regex.Replace(tds, @"[^0-9\.]", " "); while (tr.Contains(" ")) { tr = tr.Replace(" ", " "); } MatchCollection M = Regex.Matches(tr, @"(?<prx>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} \d{1,5} )+"); foreach (Match m in M) { string prx_ = m.Groups["prx"].Value.Replace(" ", ":"); if (prx_.EndsWith(":")) { prx_ = prx_.Substring(0, prx_.Length - 1); } prx_ = prx_.Trim(); if (!Prxs.Contains(prx_)) { Prxs.Add(prx_); } } } catch { } } } return(Prxs.ToArray()); }
private void ParseLot(AngleSharp.Html.Dom.IHtmlDocument document, MessageModel descriptionMessage) { var elems = document.GetElementsByClassName("lotInfo"); if (elems.Length == 0) { return; } var table = elems[0]; var trs = table.GetElementsByTagName("tr"); if (trs.Length > 0) { int number = -1; int description = -1; int startPrice = -1; int step = -1; int deposit = -1; int PriceReductionInformation = -1; int PropertyClassification = -1; var header = trs[0]; var thsHeaders = header.GetElementsByTagName("th"); var length = thsHeaders.Length; for (int i = 0; i < length; i++) { switch (thsHeaders[i].TextContent) { case "Номер лота": number = i; break; case "Описание": description = i; break; case "Начальная цена, руб": startPrice = i; break; case "Шаг": step = i; break; case "Задаток": deposit = i; break; case "Информация о снижении цены": PriceReductionInformation = i; break; case "Классификация имущества": PropertyClassification = i; break; } } length = trs.Length; for (int i = 1; i < length; i++) { var lot = new LotModel(); var tds = trs[i].GetElementsByTagName("td"); if (number != -1) { int num; if (int.TryParse(tds[number].TextContent, out num)) { lot.Number = num; } } if (description != -1) { lot.Description = tds[description].TextContent; } if (startPrice != -1) { double num; if (double.TryParse(tds[startPrice].TextContent, out num)) { lot.StartPrice = num; } } if (step != -1) { lot.Step = tds[step].TextContent; } if (deposit != -1) { lot.Deposit = tds[deposit].TextContent; } if (PriceReductionInformation != -1) { lot.PriceReductionInformation = tds[PriceReductionInformation].TextContent; } if (PropertyClassification != -1) { lot.PropertyClassification = tds[PropertyClassification].TextContent; } descriptionMessage.Lots.Add(lot); //Log.Debug($"Add lot - {lot.Number}"); } } var regex = new Regex(@"\d+\.\d+\.\d+ \d+\:\d+"); var regex1 = new Regex(@"\d+\.\d+\.\d+\s+\d+\:\d+"); var body = document.GetElementsByTagName("body")[0]; var ms = regex1.Matches(body.TextContent); if (ms.Count >= 2) { descriptionMessage.DateStart = DateTime.Parse(ms[0].Value); descriptionMessage.DateEnd = DateTime.Parse(ms[1].Value); } if (ms.Count == 3) { descriptionMessage.DateStartBargaining = DateTime.Parse(ms[2].Value); } }