Главная > php > Парсинг курса валют

Парсинг курса валют

В данной статье хочу познакомить читателей с основами php парсинга.

Для примера будем получать официальный курс гривны к доллару с сайта НБУ.
Данный код вы сможете использовать в дальнейшем, если вам нужно будет производить какие-либо математические операции с курсом, или просто выводить где-то на сайте.
Как работает данный код можно посмотреть здесь.

Сначала приведу весь код, а далее – более подробные пояснения.

Php парсинг курса гривны к доллару с сайта НБУ:

Пояснения к коду.

Строки кода 3 и 5, думаю, понятны – получаем всё содержимое страницы сайта-донора.
Далее, заходим на сайт НБУ. Нажимаем Ctrl+U (просмотр кода страницы) и находим фрагмент кода html, где выводится курс доллара.

Анализируем данный фрагмент. Чтобы получить значение курса нам нужно написать регулярное выражение, которое получит весь код между уникальным кодом в
строке 4: <td class="cell_c">USD</td>
и
строке 9: </tr>
Ранее в статье "Php получить текст между тегами" я подробно описал как составить правильное регулярное выражение, поэтому здесь привожу уже готовую регулярку без дополнительных пояснений.

Таким образом, в элементе массива $arr[0] будет храниться следующее значение:

Следующим регулярным выражением получим все значения между тегами
<td class="cell_c"> и </td>:

Теперь содержимое массива $arr такое:

Собственно, можно считать, что курс валют уже получен. Он храниться в $arr[1][2].
А дальше делайте с ним что необходимо. Можно сформировать строку и вывести её, как я сделал в своём рабочем примере (ссылка в начале статьи).

Естественно, если изменится структура страницы-донора, то нужно будет вносить изменения в код.
Аналогично можно получать и другие данные с сайтов.
Если есть какие-то вопросы – пишите в комментарии.



  1. евгений
    15 Авг 2014 из 10:24 | #1

    Не могли бы вы привести с сохранением результата в xml?

  2. 08 Май 2014 из 19:39 | #2

    Да, возможно, на сайте структура изменилась, я не отслеживал. Спасибо за комментарий!

  3. Дмитрий
    08 Май 2014 из 19:28 | #3

    По состоянию на начало мая 2014, для того чтобы вытянуть USD:
    $url = “http://www.bank.gov.ua/control/ru/curmetal/detail/currency?period=daily”;
    $text = file_get_contents($url);
    preg_match(‘#100 Доларів США.*?#is’, $text, $arr);
    preg_match_all(‘#(.*?)#is’, $arr[0], $arr);
    $usd = trim(strip_tags($arr[0][0]));
    echo $usd;

  1. Трекбеков пока нет.