示例#1
0
        public emitent GetEmitentData(string idemitent)
        {
            //определение значения ИНН эмитента с учетом разного вида отображния на странице (указан только ИНН, указан ИНН и БИК)
            emitent Emit = new emitent();
            string  XP   = "https://www.acra-ratings.ru/ratings/issuers/" + idemitent;

            HtmlAgilityPack.HtmlWeb web1 = new HtmlWeb();
            web1.OverrideEncoding = Encoding.GetEncoding("Windows-1251");
            HtmlAgilityPack.HtmlDocument doc1 = web1.Load(XP);
            Emit.emit = int.Parse(idemitent);
            try
            {
                Emit.inn = ulong.Parse(doc1.DocumentNode.SelectSingleNode("/html/body/div/div[3]/div/section[2]/div/div/div[1]/div[3]/span[2]").InnerText.Replace(" ", ""));
            }
            catch
            { }
            try
            {
                Emit.inn = ulong.Parse(doc1.DocumentNode.SelectSingleNode("/html/body/div/div[2]/div/section[2]/div/div/div[1]/div[3]/span[2]").InnerText.Replace(" ", ""));
            }
            catch
            { }
            return(Emit);
        }
示例#2
0
        public emitent[] Start()
        {
            emitent[] Emits = new emitent[this.GetMAX("https://www.acra-ratings.ru/ratings/issuers?order=date_from&page=1&sort=desc")];//определение размера масива структур (общее количесто эмитентов)
            int       num   = 1;
            int       i     = 1;
            int       j     = 0;

            this.GetLinesOfPage("https://www.acra-ratings.ru/ratings/issuers");//получение количества строк на первой странице (nline)
            do
            {
                HtmlAgilityPack.HtmlWeb web1 = new HtmlWeb();
                //URL адрес с изменяемым порядковым номером страницы i
                HtmlAgilityPack.HtmlDocument doc1 = web1.Load("https://www.acra-ratings.ru/ratings/issuers?order=date_from&page=" + i + "&sort=desc");
                try
                {   //проверка наличия строки "Найдено документов: 155"
                    var    far   = doc1.DocumentNode.SelectSingleNode("//*[@id='search-results']/div/section/span");
                    string enddo = far.InnerHtml;

#if DEBUG
                    Console.WriteLine("https://www.acra-ratings.ru/ratings/issuers?order=date_from&page=" + i + "&sort=desc");
#endif
                    //выгрузка данных из таблицы постранично
                    HtmlAgilityPack.HtmlWeb webALL1 = new HtmlWeb();

                    HtmlAgilityPack.HtmlDocument docALL1 = webALL1.Load("https://www.acra-ratings.ru/ratings/issuers?order=date_from&page=" + i + "&sort=desc");

                    do
                    {
                        foreach (HtmlNode row in docALL1.DocumentNode.SelectNodes("//*[@id='search-results']/div[1]/section/table/tbody/tr[" + num + "]"))
                        {
                            if (row != null)
                            {
#if DEBUG
                                Console.WriteLine(num);
#endif

                                HtmlNode NumInTable = row.SelectSingleNode("td[1]/a"); //наименование
                                Emits[j].name = NumInTable.InnerText;
                                //Console.WriteLine(NumInTable.InnerText);
                                HtmlNode TimeOfBound = row.SelectSingleNode("td[2]/span[2]");//рейтинг
                                Emits[j].rating = TimeOfBound.InnerText;
                                //Console.WriteLine(TimeOfBound.InnerText);
                                HtmlNode NameOfBound = row.SelectSingleNode("td[3]/span[2]");//прогноз пересмотр
                                Emits[j].forecast = NameOfBound.InnerText;
                                //Console.WriteLine(NameOfBound.InnerText);

                                HtmlNode redemption = row.SelectSingleNode("td[4]/a"); // сектор
                                Emits[j].sector = redemption.InnerText;
                                //Console.WriteLine(redemption.InnerText);
                                HtmlNode YearsToRedemption = row.SelectSingleNode("td[5]/span[2]"); //регион
                                Emits[j].eregion = YearsToRedemption.InnerText;
                                //Console.WriteLine(YearsToRedemption.InnerText);
                                HtmlNode DoxodnosTbParse = row.SelectSingleNode("td[6]/span[2]");// дата
                                Emits[j].data = DoxodnosTbParse.InnerText;
                                //Console.WriteLine(DoxodnosTbParse.InnerText);

                                HtmlNode mhref     = row.SelectSingleNode("td[1]/a");// ссылка
                                string   INN       = mhref.GetAttributeValue("href", null);
                                string   resultINN = INN.Split('/')[3];

                                ACRAParser Parser        = new ACRAParser();
                                string     emitentnamber = resultINN;
                                Emits[j].inn = Parser.GetEmitentData(emitentnamber).inn;
                                //Console.WriteLine(Parser.GetEmitentData(emitentnamber).inn);
                                //Console.WriteLine(resultINN);
                                num = num + 1;
                            }
                        }
                        j++;                                                                            //счетчик элементов массива ()
                    }while (num <= this.GetLinesOfPage("https://www.acra-ratings.ru/ratings/issuers")); //проверка конца массива строк на странице
                    i   = i + 1;                                                                        //счетчик страниц
                    num = 1;                                                                            //счетчик строк
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    break;
                }
            }while (i != 100);//заведомо большое число страниц

            return(Emits);
        }