728x90

PHP에서 curl를 이용해서 웹크롤링 해보자.

 

예로 Naver 배당주 페이지를 웹크롤링해보자.

 

※ 소스

<?php
require_once 'simple_html_dom.php';
 
$cnt = 0;
$fp = fopen("배당주.txt", 'w');
 
fwrite($fp, "[");  
$agent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)';
for($i = 1;$i < 27;$i++) {
    $html ="";
    $data["page"] = $i;
    echo($url .'<br>');
    $ch[$i] = curl_init();    //curl 초기화
    curl_setopt($ch[$i], CURLOPT_URL, $url);     //URL 지정하기
    curl_setopt($ch[$i], CURLOPT_HTTPHEADER, array("Cache-Control: no-cache"));
    curl_setopt ($ch[$i], CURLOPT_HEADER,          0);
    curl_setopt ($ch[$i], CURLOPT_RETURNTRANSFER,  1);
    curl_setopt ($ch[$i], CURLOPT_POST,            0);
    curl_setopt ($ch[$i], CURLOPT_USERAGENT,       $agent);
    curl_setopt ($ch[$i], CURLOPT_REFERER,         "");
    curl_setopt ($ch[$i], CURLOPT_TIMEOUT,         3);


    $response[$i] = curl_exec($ch[$i]);
    curl_close($ch[$i]);
    //echo($response);
    $html = str_get_html($response[$i]);
    foreach( $html->find( 'table.type_1 tr td a' ) as $a ) {
        $cnt ++;
        if ($cnt > 1) {
            fwrite($fp, ",");
            //echo ',';
        }
        fwrite($fp, '["'
            . str_replace("code=","",strstr($a->href,"code="))
            . '","'
            . iconv("EUC-KR", "UTF-8", $a->plaintext)
            . '"]');  
        echo '{"code":"';
        echo str_replace("code=","",strstr($a->href,"code="));
    }
    $html->clear();
}
fwrite($fp, "]");
fclose($fp);
?>

 

※ 실행

 

728x90
반응형

'Software > PHP' 카테고리의 다른 글

PHP 시작하기 - Barcode39  (0) 2024.08.08
PHP 소개  (0) 2024.08.08
PHP 시작하기 - header 및 호출시 파라멘트 읽기  (0) 2024.06.22
phpmyadmin에서 SQL 내보내기 euc-kr 추가하기  (0) 2024.06.21
PHP 보안관련 설정  (0) 2024.05.25

+ Recent posts