simplehtmldom parsing exchange rates in a bank (example)
Category: Parsing, PHP code examples
Курсы берем со страницы:
http://www.kktcmerkezbankasi.org/tr/veriler/doviz_kurlari/kur_sorgulama/
Выкачать PHP Simple HTML DOM Parser и найти парсер можно здесь:
https://simplehtmldom.sourceforge.io/docs/1.9/index.html
Чтобы не терроризировать сайт-донор, мы выкачиваем сначала код страницы и сохраняем её в файлик. Сделать это можно кодом:
// грабим $homepage = file_get_contents('http://www.kktcmerkezbankasi.org/tr/veriler/doviz_kurlari/kur_sorgulama/'); // смотрим что получили echo $homepage; // название файла куда сохранять будем $file = 'website.php'; // открываем файл для получения существующего содержимого (опционально, иногда надо вынуть то что уже есть в файле и добавить еще что-то) $webpage = file_get_contents($file); // пишем наше содержимое обратно в файл file_put_contents($file, $homepage);
Итого у нас есть файлик website.php к которому мы можем обращаться произвольное количество раз в процессе настройки не боясь получить бан и т.д.
Непосредственно получение данных со страницы у нас происходит вот так:
include('simple_html_dom.php'); echo $html = file_get_html('https://idmatest.website/website.php'); echo ' USD покупка '.$html->find('table.doviz_kurlari_center.sticky-enabled',0)->find('tbody',0)->find('tr',0)->find('td',1)->plaintext.'<br><hr>'; echo ' USD продажа '.$html->find('table.doviz_kurlari_center.sticky-enabled',0)->find('tbody',0)->find('tr',0)->find('td',2)->plaintext.'<br><hr>'; echo ' EUR покупка '.$html->find('table.doviz_kurlari_center.sticky-enabled',0)->find('tbody',0)->find('tr',3)->find('td',1)->plaintext.'<br><hr>'; echo ' EUR продажа '.$html->find('table.doviz_kurlari_center.sticky-enabled',0)->find('tbody',0)->find('tr',3)->find('td',2)->plaintext.'<br><hr>'; echo ' EUR покупка '.$html->find('table.doviz_kurlari_center.sticky-enabled',0)->find('tbody',0)->find('tr',4)->find('td',2)->plaintext.'<br><hr>'; echo ' GBR продажа '.$html->find('table.doviz_kurlari_center.sticky-enabled',0)->find('tbody',0)->find('tr',4)->find('td',2)->plaintext.'<br><hr>';
У нас была таблица.
<table class="doviz_kurlari_center sticky-enabled" border="2" cellpadding="3">
Отсюда при обращении указание двух классов через точку. Других таблиц с такими классами на странице нет.
Далее мы просто прописываем путь до ячеек с нужной нам информацией. В данном случае это первые два цифровых столбца для валют USD, EUR, GBP. Соответственно 0, 1, 2, 3, 4 – номера элементов (строк и столбцов) в таблице.
Чтобы сохранить/взять из БД полученные данные для дальнейшего использования можно использовать “mysqli: примеры запросов к БД“.