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

Тема в разделе "Как сделать...", создана пользователем Vadiml, 10 окт 2015.

Статус темы:
Закрыта.
  1. Vadiml

    Vadiml Создатель

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

    primehostnet Постоялец

    Регистр.:
    28 июн 2015
    Сообщения:
    98
    Симпатии:
    17
    да, нужно написать парсер, который будет обращаться на сайт банка, записывать к себе в кеш данные и потом брать эти данные уже из своего кеша. время жизни кеша можно будет настроить. для парсинга использовать удобней будет simple_html_dom, но тут дело вкуса.
     
  3. Vadiml

    Vadiml Создатель

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

    6 если быть точным.
     
    Последнее редактирование модератором: 12 окт 2015
  4. Gameer

    Gameer Постоялец Нарушитель

    Регистр.:
    25 апр 2014
    Сообщения:
    99
    Симпатии:
    65
    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 ) == )
            {
                
    $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] ) > ) {
            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$kovnert2'.''');
        echo 
    $kovnert '<br>';
    }
    Всегда пожалуйста.
     
    Vadiml нравится это.
Статус темы:
Закрыта.