コード例 #1
0
        static void Main(string[] args)
        {
            RBParser Parser = new RBParser();

            emitentMain[] Test = Parser.Start();

            foreach (emitentMain item in Test)
            {
                Console.WriteLine(item.Issuer + " " + item.inn);
            }
            Console.ReadLine();
        }
コード例 #2
0
        static void Main(string[] args)
        {
            RusBounds.RBParser test = new RusBounds.RBParser();
            //test.GetPageCounter("http://www.rusbonds.ru/srch_simple.asp?go=0&ex=0&s=1&d=1&p=0");
            // test.GetRowCounter("http://www.rusbonds.ru/srch_simple.asp?go=0&ex=0&s=1&d=1&p=0");
            BondRelease[] Test = test.Start();

            foreach (BondRelease emitentMain  in Test)
            {
                Console.WriteLine(emitentMain.MarketSector);
            }
            Console.ReadLine();
        }
コード例 #3
0
ファイル: RBParser.cs プロジェクト: StepanSolovyev/pbn
        public emitentMain[] Start()

        {
            int cntpage = this.GetPageN("http://www.rusbonds.ru/srch_emitent.asp?emit=0&cat=0&rg=0&rate=0&stat=0&go=0&s=5&d=0&p=1#rslt1#rslt"); //определние кол-ва страниц
            int MP      = this.GetLinesOfPage("http://www.rusbonds.ru/srch_emitent.asp?emit=0&cat=0&rg=0&rate=0&stat=0&go=0&s=5&d=0&p=1#rslt"); //получение количества строк на первой странице (nline)

            //Console.WriteLine(MP *cntpage);

            emitentMain[] EmitM = new emitentMain[MP * cntpage];//определение размера масива структур (общее количесто эмитентов)
            int           num   = 1;
            int           i     = 1;
            int           j     = 0;

            do
            {
                HtmlAgilityPack.HtmlWeb web1 = new HtmlWeb();
                web1.OverrideEncoding = Encoding.GetEncoding("Windows-1251");
                //URL адрес с изменяемым порядковым номером страницы i
                HtmlAgilityPack.HtmlDocument doc1 = web1.Load("http://www.rusbonds.ru/srch_emitent.asp?emit=0&cat=0&rg=0&rate=0&stat=0&go=0&s=5&d=0&p=" + i + "#rslt");

                try
                {
#if DEBUG
                    // Console.WriteLine("http://www.rusbonds.ru/srch_emitent.asp?emit=0&cat=0&rg=0&rate=0&stat=0&go=0&s=5&d=0&p=" + i + "#rslt");
#endif
                    //выгрузка данных из таблицы постранично
                    HtmlAgilityPack.HtmlWeb webALL1 = new HtmlWeb();
                    webALL1.OverrideEncoding = Encoding.GetEncoding("Windows-1251");
                    HtmlAgilityPack.HtmlDocument docALL1 = webALL1.Load("http://www.rusbonds.ru/srch_emitent.asp?emit=0&cat=0&rg=0&rate=0&stat=0&go=0&s=5&d=0&p=" + i + "#rslt");

                    do
                    {
                        foreach (HtmlNode row in docALL1.DocumentNode.SelectNodes("/html/body/div[1]/table[2]/tbody/tr[" + num + "]"))
                        {
                            if (row != null)
                            {
#if DEBUG
                                Console.WriteLine(num);
#endif
                                HtmlNode IndustryInTable = row.SelectSingleNode("td[1]"); //Отрасль
                                EmitM[j].Industry = IndustryInTable.InnerText;
                                //Console.WriteLine(NumInTable.InnerText);
                                HtmlNode IssuerInTable = row.SelectSingleNode("td[2]/a");//Название Эмитента
                                EmitM[j].Issuer = IssuerInTable.InnerText;
                                //Console.WriteLine(TimeOfBound.InnerText);
                                try
                                {
                                    HtmlNode RegionInTable = row.SelectSingleNode("td[3]");//Регион
                                    EmitM[j].Region = RegionInTable.InnerText;
                                    if (RegionInTable.InnerText == " ")
                                    {
                                        EmitM[j].Region = " ";
                                    }
                                }
                                catch
                                {
                                    EmitM[j].Region = "";
                                }
                                //Console.WriteLine(NameOfBound.InnerText);
                                try
                                {
                                    HtmlNode CharterCapitalInTable = row.SelectSingleNode("td[4]");
                                    if (CharterCapitalInTable.InnerText == " ")
                                    {
                                        EmitM[j].CharterCapital         = 0;  // Уставной капитал  (1000 RUB - вытягивать 1000)
                                        EmitM[j].CharterCapitalСurrency = ""; // валюта уставного капитала (1000 RUB - вытягивать RUB)}
                                    }
                                    else
                                    {
                                        string[] U = this.GetCapital(CharterCapitalInTable.InnerText);                  //вытягиваем число с пробелами из уставного капитала до букв валюты
                                        EmitM[j].CharterCapital = ulong.Parse(U[0].Replace(" ", String.Empty));         // удаляем пробелы из числа
                                        //this.Сurrency(CharterCapitalInTable.InnerText);
                                        string[] V = this.Сurrency(CharterCapitalInTable.InnerText);                    //вытягиваем валюту из уставного капитала
                                        EmitM[j].CharterCapitalСurrency = (V[V.Length - 1].Replace(" ", String.Empty)); // удаляем пробелы из числа
                                    }
                                }
                                catch
                                {
                                    EmitM[j].CharterCapital = 0;
                                }
                                //Console.WriteLine(redemption.InnerText);
                                try
                                {
                                    HtmlNode DLCntInTable = row.SelectSingleNode("td[5]");// внутренние займы(кол-во)
                                    EmitM[j].DomesticLoansCnt = int.Parse(DLCntInTable.InnerText);
                                }
                                catch
                                {
                                    EmitM[j].DomesticLoansCnt = 0;
                                }
                                try
                                {
                                    HtmlNode DLСurInTable = row.SelectSingleNode("td[6]");// Внутренние займы(объем RUB)

                                    EmitM[j].DomesticLoansСurrency = ulong.Parse(DLСurInTable.InnerText.Replace(" ", string.Empty));
                                }
                                catch
                                { EmitM[j].DomesticLoansСurrency = 0; }
                                try
                                {
                                    HtmlNode FLCntInTable = row.SelectSingleNode("td[7]");// внешние займы(кол-во)
                                    if (FLCntInTable.InnerText == " ")
                                    {
                                        EmitM[j].ForeignLoansCnt = 0; // внешние займы(кол-во)
                                    }
                                    else
                                    {
                                        EmitM[j].ForeignLoansCnt = int.Parse(FLCntInTable.InnerText); // удаляем пробелы из числа
                                    }
                                }
                                catch { EmitM[j].ForeignLoansCnt = 0; }
                                try
                                {
                                    HtmlNode FLСurInTable = row.SelectSingleNode("td[8]");// внешние займы(объем USD)
                                    if (FLСurInTable.InnerText == " ")
                                    {
                                        EmitM[j].ForeignLoansСurrency = 0;
                                    }
                                    else
                                    {
                                        EmitM[j].ForeignLoansСurrency = ulong.Parse(FLСurInTable.InnerText.Replace(" ", string.Empty));
                                    }
                                }
                                catch { EmitM[j].ForeignLoansСurrency = 0; }

                                HtmlNode RatingInTable = row.SelectSingleNode("td[9]"); // рейтинг
                                EmitM[j].Rating = RatingInTable.InnerText;

                                HtmlNode mhref         = row.SelectSingleNode("td[2]/a");// ссылка  http://www.rusbonds.ru/ank_org.asp?emit=78881
                                string   INN           = mhref.GetAttributeValue("href", null);
                                string   resultINN     = INN.Split('=')[1];
                                RBParser Parser        = new RBParser();
                                string   emitentnamber = resultINN;
                                EmitM[j].inn = Parser.GetEmitentData(emitentnamber).inn;
                                //Console.WriteLine(Parser.GetEmitentData(emitentnamber).inn);
                                //Console.WriteLine(resultINN);
                                num = num + 1;
                            }
                        }
                        j++;            //счетчик элементов массива ()
                    }while (num <= MP); //проверка конца массива строк на странице
                    i   = i + 1;        //счетчик страниц
                    num = 1;            //счетчик строк
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    break;
                }
            }while (i != 300);//заведомо большое число страниц
            return(EmitM);
        }