Парсинг информации с simplehtmldom на примере курсов валют в банке

Последнее обновление: 21 апреля, 2022

parsing

Курсы берем со страницы:

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: примеры запросов к БД«.