Îðëà
Îáëàñòè
Êîìïàíèé
Ïîëüçîâàòåëè
Ãàëåðåÿ
Ôèêñèðîâàííûå íîâîñòè
Îðëà
Îòçûâû î ôèðìàõ
Òàðèôû
Ïîëüçîâàòåëè
Îáëàñòè
Áàíêîìàòû
Òîðãîâûå òî÷êè
Äîñêà îáúÿâëåíèé
Êóðñû âàëþò
Ñêèäêè
îðãàíèçàöèè Îðëà
îðãàíèçàöèè îáëàñòè
òîâàðû
ñàéòû
ñàéòû Îðåë
Äàííûå
Ðàçäåëû
Ïîèñê
Ïîèñê çàïðîñû
Ñòàòèñòèêà
Ïîêàçû êàòàëîãà îðãàíèçàöèé
Ñòàòèñòèêà êëèåíòû
Ïîëüçîâàòåëè
Ñàéòû
Óïðàâëåíèå ñàéòîì
Àíêåòà
Àïòåêè
Àôèøà
Àôèøà íîâàÿ
Áàííåðû
Áèçíåñ >
Âèêòîðèíà
Ãîëîñîâàíèå
Ãîñòü íà ñàéòå
Èñòîðèè
Êàëåíäàðü ñîáûòèé
Êàòàëîãè >
Êîíêóðñ êðàñîòû
Êîíêóðñ àóäèî
Êîíñóëüòàöèè
Ìåíþ
Íîâîå íà ñàéòå
Íîâîñòè >
Îðãàíèçàöèè >
Ïðîãðàììà ÒÂ
Ïóáëèêàöèè
Ðàçäåëû ñàéòà
Ðàññûëêà
Ðåñòîðàíû
Ñåêðåò ôèðìû >
Ñåðâèñû >
Ññûëêè
Òåñòû
Ôàéëîâûé ìåíåäæåð
Ôîðóì
Ôîòîãàëåðåÿ
Îáðàòíàÿ ñâÿçü
Íåäâèæèìîñòü
Íîâûé ãîä
Òåêñòû
Ïîëüçîâàòåëè
Þðèäè÷åñêèé ðåéòèíã
Îòçûâû íà òîâàðû
Áàí ïîëüçîâàòåëåé
Æàëîáû
Íîâûå òåñòû
Êîðîíàâèðóñ
Ôàéëîâûé ìåíåäæåð
Èìÿ ôàéëà
cron_banks.php
Ñîäåðæèìîå
<?php include 'parser/simple_html_dom.php'; require("/data/site/htdocs/infoorel.ru/html/func.php"); ini_set('max_execution_time', 3600); function connect() { $host = 'parser'; // адреÑ� Ñ�ервера $dbname = 'info'; // имÑ� базы данных $user = 'root'; // имÑ� пользователÑ� $pass = ''; // пароль try { $DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass); return $DBH; } catch (PDOException $e) { echo $e->getMessage(); exit; } } function getHtmlPage($url) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36'); $page = curl_exec($ch); curl_close($ch); return $page; } function getIdBank($name) { $data = array( 'Сбербанк РоÑ�Ñ�ии' => 1, //+ 'Райффайзенбанк' => 2, //+ 'Ð’Ñ�ероÑ�Ñ�ийÑ�кий банк развитиÑ� регионов' => 5, //- 'МДМ' => 6, //- 'Ð�вангард' => 10, //- 'МоÑ�ковÑ�кий коммерчеÑ�кий банк МоÑ�комприватбанк ЗÐ�О ОрловÑ�кий филиал' => 40, //- 'РоÑ�банк' => 13, //+ 'МÐ�К банк' => 14, //- 'МоÑ�ковÑ�кий ИндуÑ�триальный Банк' => 17, //+ 'Ланта-Банк' => 22, //+ 'Банк ТраÑ�Ñ‚' => 19, //+ 'ЮнаÑ�триум Банк' => 23, //- 'Банк ВТБ' => 25, //+ 'СвÑ�зь-Банк' => 35 //+ ); if (isset($data[$name])) { return $data[$name]; } return -1; } function nullFilter($ind) { if ($ind != "") { return $ind; } } class CurrencyDto { public $id; public $dollar1; public $dollar2; public $euro1; public $euro2; public function __construct($ms) { if (isset($ms['idBank'])) { $this->id = $ms['idBank']; } if (isset($ms['dollar1'])) { $this->dollar1 = $ms['dollar1']; } if (isset($ms['dollar2'])) { $this->dollar2 = $ms['dollar2']; } if (isset($ms['euro1'])) { $this->euro1 = $ms['euro1']; } if (isset($ms['euro2'])) { $this->euro2 = $ms['euro2']; } } } class CurrencyRepository { private $currency = []; public function add(CurrencyDto $currency) { array_push($this->currency, $currency); } public function saveAll() { $l = db_connect(); $data = date("Y-m-d", time()); $prov = "SELECT id FROM currency WHERE data='$data' and id_bank<>0 LIMIT 1"; $p = sqlval($prov); if ($p[0] and $p[0] > 0) { $modify = 'update'; } else { $modify = 'insert'; } foreach ($this->currency as $val) { var_dump($val); switch ($modify) { case 'insert': $d1 = $val->dollar1; $d2 = $val->dollar2; $e1 = $val->euro1; $e2 = $val->euro2; $id = $val->id; $sql = "insert into currency (ticker,kurs,data,id_bank,kurs2) values ('USD', $d1, now(), $id, $d2), ('EUR', $e1, now(), $id, $e2)"; sql($sql); break; case 'update': $sql = "update currency set kurs=$d1, kurs2=$d2 where ticker='USD' and id_bank=$id and data='$data'"; sql($sql); $sql1 = "update currency kurs=$e1, kurs2=$e2 where ticker='EUR' and id_bank=$id and data='$data'"; sql($sql1); break; } } } } interface ParserInterface { /** * здеÑ�ÑŒ логика парÑ�инга, разбор хтмл, и функциÑ� возвращает маÑ�Ñ�ив пригодных длÑ� вÑ�тавки данных * @return AfishaDto[] */ public function parse(); } class OrelVbrParser implements ParserInterface { public $url = 'https://orel.vbr.ru/banki/kurs-valut/'; public function parse() { $page = getHtmlPage($this->url); $html = str_get_html($page); $banks = $html->find('div.course-section-main'); $banks = $banks[0]->find('div.course-section'); $banks = $banks[0]->find('tbody'); $banks = $banks[0]->find('tr.show-detail'); $bankMs = []; $res = []; foreach ($banks as $val) { $htmlBankName = $val->find('td.relative'); $htmlBankName = $htmlBankName[0]->find('a'); $name = trim($htmlBankName[1]->plaintext); $name = str_replace('«', '', $name); $name = str_replace('»', '', $name); $name = trim($name); $dolEur = $val->find('span.currency-price'); $dollar2 = $dolEur[0]->plaintext; $dollar1 = $dolEur[1]->plaintext; $euro2 = $dolEur[2]->plaintext; $euro1 = $dolEur[3]->plaintext; $idBank = getIdBank($name); if ($idBank != -1) { $res['dollar1'] = str_replace(',', '.', $dollar1); $res['dollar2'] = str_replace(',', '.', $dollar2); $res['euro1'] = str_replace(',', '.', $euro1); $res['euro2'] = str_replace(',', '.', $euro2); $res['idBank'] = $idBank; array_push($bankMs, $res); } } return $bankMs; } } class ParserStrategy { private $parser = []; public function add(ParserInterface $parser) { array_push($this->parser, $parser); } public function parse() { $repObj = new CurrencyRepository(); foreach ($this->parser as $value) { $res = $value->parse(); // ЗдеÑ�ÑŒ мы парÑ�им по вÑ�ем парÑ�ерам и автоматичеÑ�ки заноÑ�им данные в репозиторий foreach ($res as $val) { $rep = new CurrencyDto($val); $repObj->add($rep); } } $repObj->saveAll(); } } $parser = new ParserStrategy(); $parser->add(new OrelVbrParser()); //$parser->add(new TsumKinoPArser()); $parser->parse(); // паттерн репозиторий // паттерн Ñ�тратегиÑ� // паттерн dto
/busines/
Èìÿ
Äàòà
Ðàçìåð
..
2026-10-02
parser
2020-01-15
cron_banks.php
2020-01-15
7 êá.
cron_banks_old.php
2019-12-16
3 êá.
currency.php
2020-01-16
6 êá.
/busines
Çàãðóçèòü ôàéëû
Ôàéë 1
Ôàéë 2
Ôàéë 3