Парсинг некоторых данных (создание виджета валют на основе сайта банка)

Статус
В этой теме нельзя размещать новые ответы.

Vadiml

Создатель
Регистрация
11 Июл 2015
Сообщения
22
Реакции
4
Появилась потребность парсинга информации о курсах валют (хотя бы 1 раз в день) с сайта банка, например этого - Для просмотра ссылки Войди или Зарегистрируйся. Не воображаю как это сделать. Писать скрипт на php? Взял бы готовый, да нигде нету именно Варшавы, что мне нужно. Польские информеры - у них нету курса рубля, гривны, белорусского рубля. А это мне нужно больше всего. Подскажите, в каком направлении копать? Извиняйте, если не в том разделе создал тему.
 
да, нужно написать парсер, который будет обращаться на сайт банка, записывать к себе в кеш данные и потом брать эти данные уже из своего кеша. время жизни кеша можно будет настроить. для парсинга использовать удобней будет simple_html_dom, но тут дело вкуса.
 
да, нужно написать парсер, который будет обращаться на сайт банка, записывать к себе в кеш данные и потом брать эти данные уже из своего кеша. время жизни кеша можно будет настроить. для парсинга использовать удобней будет simple_html_dom, но тут дело вкуса.

Сильная нагрузка на сервер? Я бы например в 3 ночи парсил бы, когда вообще минималка пользователей.

нет, не сильная, вам же не весь сайт нужен а пару десятков курсов валют, верно?
6 если быть точным.
 
Последнее редактирование модератором:
PHP:
function Parse_Curs() {

    $xml = simplexml_load_file( 'http://www.cbr.ru/scripts/XML_daily.asp', 'SimpleXMLElement', LIBXML_NOCDATA );

    $curs_array[0] = array( 'CharCode' => 'RUB', 'Nominal' => '1', 'Name' => 'Российских рублей', 'Value' => '1' );

    $i = 1;
    foreach( $xml->Valute AS $el ) {

        $curs_array_f = array();

        $info = $el->CharCode . "|" . $el->Nominal . "|" . $el->Name . "|" . $el->Value;
        $info = explode( '|', $info );

        $exp_info = explode( ',', $info[3] );
        $info[3] = $exp_info[0];
        if ( count( $exp_info ) == 2 )
        {
            $info[3] .= '.' . $exp_info[1][0] . $exp_info[1][1] . $exp_info[1][2] . $exp_info[1][3];
        }

        $curs_array[$i] = array( 'CharCode' => $info[0], 'Nominal' => $info[1], 'Name' => $info[2], 'Value' => $info[3] );

        $i++;

    }

    if ( count( $curs_array[1] ) > 1 ) {
        return $curs_array;
    } else {
        return FALSE;
    }

}
$ret = Parse_Curs();
$arr_code = array('USD','BYR','UAH');
foreach ( $ret AS $code => $info )
{
    if ( $info['CharCode'] == 'RUB' )
    {
        $nazvanie_nujnoi_valytu = $info['Name'];
        $value_nujnoi_valytu = $info['Value'] / $info['Nominal'];
        //echo '[ ' . $info['CharCode'] . ' ]' .$nazvanie_nujnoi_valytu . ' : ' . $value_nujnoi_valytu . '<br>';
    }
}
foreach ( $arr_code AS $code)
{
    foreach ( $ret AS $kode => $info )
    {
        if ( $info['CharCode'] == $code )
        {
            $name_valytu = $info['Name'];
            $value_valytu = $info['Value'] / $info['Nominal'];
            //echo '[ ' . $info['CharCode'] . ' ]' .$name_valytu . ' : ' . $value_valytu . '<br>';
        }
    }
    $kovnert = $value_nujnoi_valytu / $value_valytu;
    $kovnert = number_format( $kovnert, 2, '.', '');
    echo $kovnert . '<br>';
}
Всегда пожалуйста.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху