Парсим курс валюты на C#

Сегодня будем парсить курс валюты. Информацию курса Доллара США по отношению к рублю будем брать с официального сайта Центрального банка Российской Федерации. После изучения сайта, я решил, что лучше будет брать информацию с облегчённой страницы, которая предназначена для печати. Адрес:
http://www.cbr.ru/currency_base/D_print.aspx?date_req=08.03.2010
Для получения этой страницы, сначала нужно определить текущее число:
DateTime ToDay = DateTime.Now; Console.WriteLine(ToDay.Date.ToShortDateString());
После того, как сформировали адрес, нужно выполнить простейший HTTP-запрос:
HttpWebRequest myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url); HttpWebResponse myHttpWebResponse =(HttpWebResponse)myHttpWebRequest.GetResponse(); StreamReader myStreamReader = new StreamReader(myHttpWebResponse.GetResponseStream());
Экземпляр класса HttpWebResponse получает результат выполнения GET-запроса к серверу. StreamReade принимает данные из HttpWebResponse, и с этими данными нам и придётся работать. Поподробнее о HttpWebResponse и HttpWebRequest можно почитать на RSDN.ru Взаимодействие с другими сайтами через HTTP. В myStreamReader.ReadToEnd() мы получим HTML код сайта.
В нём нам нужно выдернуть строки в которых и содержится курс валюты.
Выдёргивать будем через Регулярные выражения:
string pattern = "Доллар США</td>\r\n<td align=\"right\">(.*)</td>"; Match match = Regex.Match(html, pattern);
В match.Groups[1].ToString() и будет наш курс.
Вот так вот всё просто. В следующей статье напишу небольшой Парсер с использованием Авторизацией, сохранении Cookies.
Скачать исходник примера
Парсер USD (1.9 Кб, 1,165 скачиваний)


Мух
Только на прошлой неделе написал статью про граббинг курса валют с сайта РосБизнесКонсалтинга, но для языка Tcl
Если интересно сравнить то вот она:
http://www.intmain.ru/go/aHR0cDovL2Jsb2dteXhhLnJ1LzIwMTAvMDMvMTYvJUQwJUIzJUQxJTgwJUQwJUIwJUQwJUIxJUQwJUIxJUQwJUI4JUQwJUJEJUQwJUIzLSVEMSU4NyVEMCVCNSVEMSU4MCVEMCVCNSVEMCVCNy1odHRwLw==/
rezident
Думаю здесь уместно поделиться будет, у нас в институте был предмет по с++, так вот я вообще не врубался, а сейчас свободно пишу на этом языке. И все потому что препод примеров ну вообще не давал, я не врубался, где и что использовать!
Vect
Все мы в интститу не совсем понимали прораммирование, а тем более в школе. Все приходит с опытом, но главное желание. Спасибо за простой способ парсинга курса валют.
mob
Приходишь в институт говорят забудь чему тебя учили в школе, приходишь на работу – забудь чему тебя учили в институте. Воля.
Учил в свое время C++ по книжечке “Как программировать на С++” Х.М. Дейтел П.Дж. Дейтел
Очень хорошая и доходчивая, с практическими задачами и примерами.
P.S. Сенк за парсер.
Ливень
Как-то некрасиво в архитектурном плане, есть же соответствующие вебсервисы ЦБ
Евпатория
ДЛя украинцев с официальной ленты finance.ua
$strss = file_get_contents(‘http://www.intmain.ru/go/aHR0cDovL3RhYmxlcy5maW5hbmNlLnVhL3J1L2N1cnJlbmN5L29mZmljaWFs/‘);
preg_match(‘#full(.+)#isU’, $strss, $matches);
$arss = explode(‘/tr’, $matches[1]);
$iss=0;
$valss= array();
foreach ($arss as $trss) {
preg_match_all(‘#(.+)(?=)#isU’, $trss, $tdss);
//print_r($td);
$valss[$iss]=$tdss;
$iss++;
}
Получаем массив с курсами ну а дальше уже по вкусу. Рубли – $valss[22][0][4], т.е. 22 элемент, белорусские 4-й, доллары 28, евро 11-й
Итог можно у меня посмотреть: http://www.intmain.ru/go/aHR0cDovL3d3dy5la3Vyb3J0LmNvbQ==/
Oleg
Лучше парсить что нибудь такое
http://www.intmain.ru/go/aHR0cDovL2Nhc2hleGNoYW5nZS5jb20udWEvWG1sQXBpLmFzaHg=/
реально легче. Xml он и в Африке…