Ejemplo n.º 1
0
        /// <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());
        }
Ejemplo n.º 2
0
        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+&nbsp;\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);
            }
        }