일상 기록 창고

외환은행 환율 정보 파싱 본문

프로그래밍/PHP

외환은행 환율 정보 파싱

Crazy_Kong 2014. 10. 27. 10:26


http://fx.keb.co.kr/FER1101C.web 에서 정보 가져와서 파싱....


$curl = curl_init();

curl_setopt( $curl, CURLOPT_URL, 'http://fx.keb.co.kr/FER1101C.web' );

curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, 1);

curl_setopt( $curl, CURLOPT_BINARYTRANSFER, 1);

curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1);

curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, 0);

curl_setopt( $curl, CURLOPT_SSL_VERIFYHOST, 0);

curl_setopt( $curl, CURLOPT_HEADER, 0);

curl_setopt( $curl, CURLOPT_FOLLOWLOCATION, 1);

curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 );

$gData = curl_exec( $curl );

curl_close( $curl );

$YmgReg = '~<dd [^>]*.\'regdt\'>(.*?)</dd>~s';

preg_match_all( $YmgReg, $gData, $match, PREG_PATTERN_ORDER );

$dtYmd = $match[1][0];

// His 가져오기

$TimeReg = '~<dd [^>]*.\'dispTime\'>(.*?)</dd>~s';

preg_match_all( $TimeReg, $gData, $match, PREG_PATTERN_ORDER );

$dtHis = $match[1][0];

// 날짜 조합

$dtStartDate = str_replace('-', '', $dtYmd).str_replace(':', '', substr($dtHis, 0, 5));

$reg = '~<div[^>]*."gridPosition">(.*?)</div>~s';

preg_match_all( $reg, $gData, $matches, PREG_PATTERN_ORDER );

$aResult = Array();

if( $matches[1] )

{

$cReg = '~<td[^>]*>(.*?)</td>~s';

preg_match_all( $cReg, $matches[1][0], $gContent, PREG_PATTERN_ORDER );

if( $gContent[1] )

{

$nCount = COUNT( $gContent[1] );

for($i=0; $i<($nCount/12); $i++)

{

$nTmpNo = $i < 1 ? 0 : $i*12;

$tNation = str_replace( ' ', '', str_replace( ' ', '', trim( strip_tags( $gContent[1][ $nTmpNo ] ) ) ) );

$tNation = str_replace( '100', '', $tNation );

$tNationCode = substr( $tNation, -3 );

$tBasicRate = str_replace( ' ', '', str_replace( ' ', '', trim( strip_tags( $gContent[1][ $nTmpNo+9 ] ) ) ) );

$tUsdRate = str_replace( ' ', '', str_replace( ' ', '', trim( strip_tags( $gContent[1][ $nTmpNo+11 ] ) ) ) );


$aResult[$i] = Array(

'EXCHANGE_DATE' => $dtStartDate,

'MARKET_NAME'   => iconv('EUC-KR', 'UTF-8', str_replace( $tNationCode, '', $tNation )),

'MARKET_CODE'   => $tNationCode,

'CURRENCY_NAME' => $tNationCode,

'BASIC_RATE'    => $tBasicRate,

'USD_RATE'      => $tUsdRate

);

}

}

}


뭐 html 소스가 바뀌면 다시 해야 겠지만... 이번것도 바뀌어서 다시한거긴 하지만... 필요한 정보가 저기에 있으니.. 어쩔수 없다.


외환은행 말고도 제공하는 곳이 있긴 하지만.. 항상 뭐가 하나 부족