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(); }
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(); }
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); }