네이트 웹디렉토리 수집에이전트

kmsweb

예전에 프로모션업체에서 각 검색사이트의 디렉토리에 있는 사이트를 조사하는 프로그램을 만들다가 오늘 몇시간 짬을내서 한번만들어 봤습니다..^^;
음…기능은..
네이트의 디렉토리와 해당 디렉토리안의 사이트를 자동으로 몽땅 디비에 저장하는겁니다.

로직은 생각나는대로 짜집기 하다보니 저저분한 곳도 있고 불필요한 소스도 있을거에요…제작시간 2시간이다보니;;
이부분은 보시고 수정하세요..^^;

링크와 인기사이트는 등록되지 않습니다.
네이트의 자료를 모두 가져오는 시간은 체크하지 못함..ㅡㅡ;;

대충 로직은…
대분류를 설정후 프로그램을 돌리면 제일 마직막 디렉토리부터 검색을 합니다.
검색된 해당 디렉토리와 사이트를 디비에 중복없이 저장을하고
하위 디렉토리가 있으면 제일마지막 하위 디렉토리를 검색합니다.
이런식으로 계속 검색을 하면서 하위 디렉토리가 없으면 방문테이블에 저장을 하고 상위 디렉토리로 이동하고
그전에 방문했던 하위 디렉토리는 목록에서 제외(사라짐)되고 다시 마지막 하위디렉토리를 검색 하는 방법으로 모든 디렉토리를 방문하는 로직입니다.

설명이 이해 되나 모르겠네요..^^;
아무튼 유용할지는 모르겠지만…일단 올립니다..

//디비정보
$host=”localhost”;
$user=””;
$pwd=””;
$dbname=”nate”;
$cat_table=”category”; //디렉토리 등록테이블
$site_table=”site”; //사이트 등록테이블
$visit_table=”cat_vis”; //네이트 디렉토리에 중복방문을 피하기 위한 테이블
$site_name=””;

//대분류 설정
//해당 대분류는 반드시 $cat_table 테이블에 등록이 되있어야 합니다.
$cat[]=”뉴스 & 미디어”;
$cat_dir[]=”News_Media/”;
$cat[]=”예술 & 엔터테인먼트”;
$cat_dir[]=”Arts_entertainment/”;
$cat[]=”문화 & 사회”;
$cat_dir[]=”Culture_society/”;
$cat[]=”컴퓨터 & 인터넷”;
$cat_dir[]=”Computer/”;
$cat[]=”레크레이션 & 스포츠”;
$cat_dir[]=”Recreation/”;
$cat[]=”건강 & 의학”;
$cat_dir[]=”Health_medicine/”;
$cat[]=”교육 & 참고자료”;
$cat_dir[]=”Education_Reference/”;
$cat[]=”과학 & 학문”;
$cat_dir[]=”Technology_science/”;
$cat[]=”비즈니스 & 경제”;
$cat_dir[]=”Business_Economics/”;
$cat[]=”취업정보”;
$cat_dir[]=”Job_info/”;
$cat[]=”쇼핑”;
$cat_dir[]=”Shopping/”;
$cat[]=”생활 & 가정”;
$cat_dir[]=”Life_Woman/”;

//수정 불가
$dbcon=mysql_connect($host,$user,$pwd);
mysql_select_db($dbname,$dbcon);
$query=””.$dir;
$up_dir=eregi_replace(‘directory/’,”,$query);
$sql=”select * from category where dir=’$up_dir’ && link=0″;
echo”$sql
“;
$result=mysql_query($sql);
$view=mysql_fetch_array($result);
echo”상위 디렉토리 : $up_dir 코드값 : $view[no]
“;
$fp = fsockopen (“search.nate.com”, 80, $errno, $errstr, 30);
fputs ($fp, “GET /$query HTTP/1.0
Host: search.nate.com

“);
while (!feof($fp)) {
$list .= fgets($fp,128);
}
fclose ($fp);

if(!$dir){
$pfile = “nate_r.php?dir=directory/”;
for($i=0;$i $sql=”select * from cat_vis where dir=’$cat_dir[$i]'”;
$rs=mysql_query($sql);
$rw=mysql_num_rows($rs);
if(!$rw){
echo”“.$cat[$i].”
“;
$dir_up=$pfile.$cat_dir[$i];
$in_dir=$cat_dir[$i];
}
}
echo”$dir_up”;
$sql=”insert into $visit_table values(”,’$in_dir’)”;
mysql_query($sql);
echo”“;
}
if($dir){
echo”
—디렉토리 추출—-
“;
if(eregi(““,$list)){
$list2 = eregi_replace(‘^.+‘,”,$list);
$list2 = eregi_replace(‘.+$’,”,$list2);
$list2 = eregi_replace(‘ preg_match_all(“//is”,$list2,$str2);
for ($i=0;$i $d_name=””;
$link_t=””;
$list2 = $str2[1][$i];
$list2 = eregi_replace(‘class=LU-10LU>’,”,$list2);
$list2 = trim($list2);
$link_t=explode(” “,$list2);
$directory=eregi_replace(‘http://’.$site_name.’/nate_robot.php?dir=directory/’,”,$link_t[0]);
for($j=0;$j $pi=$j+1;
$d_name.=” “.$link_t[$pi];
}
$d_name=trim($d_name);
$link_dir=”
“.$d_name.”“;
//디렉토리 중복 검사 시작
$sql=”select * from $cat_table where dir=’$directory'”;
$result=mysql_query($sql);
$row=mysql_num_rows($result);
if($row){
$status=”중복“;
$st=”1″;
}else{
$status=”신규“;
$st=”2″;
}
//디렉토리 중복검사 끝
//링크 디렉토리 처리 시작
$link_tmp=explode(“..”,$directory);
$link_cnt=count($link_tmp);
if($link_cnt>1){
$link_st=”링크”;
$dir_cnt=$link_cnt-1;
$directory=$link_tmp[$dir_cnt];
$directory=eregi_replace(‘^/’,”,$directory);
if(!$mv_dir) $mv_dir=$up_dir;
}else{
$link_st=”정상”;
$now=time();
$level_cnt=explode(“/”,$directory);
$level_cnt=count($level_cnt)-2;
if($st==”2″){
$lst=”y”;
$sql=”insert into $cat_table(parent,level,pname,dir,rno,regdate,link) values(‘$view[no]’,’$level_cnt’,’$d_name’,’$directory’,0,’$now’,0)”;
mysql_query($sql);
echo”$sql
“;
}
//링크 디렉토리 처리 끝
$sql=”select * from $visit_table where dir=’$directory'”;
$rs=mysql_query($sql);
$rw=mysql_num_rows($rs);
if(!$rw){
$dir_chk=”yes”;
$mv_dir=$directory;
echo”[$link_dir – $link_st($status)] —— $d_name – $directory
“;
}
}
}
}
if(eregi(““,$list)){
echo”
—웹페이지 추출—-
“;
$list3 = eregi_replace(‘^.+‘,”,$list);
$list3 = eregi_replace(‘.+$’,”,$list3);
preg_match_all(“/

  • (.+?)
  • /is”,$list3,$str3);
    for ($i=0;$i $page_name=””;
    $page_tmp=””;
    $d_name=””;
    $list3 = $str3[1][$i];
    $list3=eregi_replace(‘

    ‘,”,$list3);
    $list_tmp=explode(“
    “,$list3); // 실제 필요한 자료 분리
    if(eregi(“http://”,$list_tmp[0])){
    $tnc=explode(““,$list_tmp[0]); //제목과 내용 분리
    $tnu_tmp=eregi_replace(‘ $tnu_tmp=eregi_replace(‘target=.+class=LU-10LU>’,”,$tnu_tmp);
    $tnu_tmp = eregi_replace(‘”‘,”,$tnu_tmp);
    $tnu_tmp = trim($tnu_tmp);
    $page_tmp=explode(” “,$tnu_tmp);
    $page_cnt=count($page_tmp);
    for($j=0;$j $pi=$j+1;
    $page_name.=” “.$page_tmp[$pi];
    }
    $page_name=trim($page_name);
    $page_name=ereg_replace(“<([^<]+)>“,””,$page_name);
    $page_name=ereg_replace(” “,””,$page_name);
    $page_url=$page_tmp[0];
    $content=$tnc[1];
    $content=ereg_replace(“<([^<]+)>“,””,$content);
    $content=ereg_replace(” – “,””,$content);
    $content=ereg_replace(” “,””,$content);
    $sql=”select * from $site_table where siteUrl=’$page_url'”;
    $rs=mysql_query($sql);
    $rw=mysql_num_rows($rs);
    if(!$rw){
    $sql=”insert into $site_table(sitename,siteUrl,memo,regdate,pno,open) values(‘$page_name’,’$page_url’,’$content’,’$now’,’$view[no]’,’Y’)”;
    mysql_query($sql);
    echo”$sql
    “;
    }
    echo”$page_name $content – $page_url
    “;
    }else{
    $list3 = eregi_replace(‘
    $list3 = eregi_replace(‘class=LU-10LU>’,”,$list3);
    $list3 = eregi_replace(‘
    .+$’,”,$list3);
    $list3 = trim($list3);

    $dir_tmp=explode(” “,$list3);
    $ch_dir=eregi_replace(‘directory/’,”,$dir);
    $directory=$ch_dir.$dir_tmp[0];
    for($j=0;$j $pi=$j+1;
    $d_name.=” “.$dir_tmp[$pi];
    }
    $d_name=trim($d_name);
    $link_dir=”“.$d_name.”“;
    //디렉토리 중복 검사 시작
    $sql=”select * from $cat_table where dir=’$directory'”;
    $result=mysql_query($sql);
    $row=mysql_num_rows($result);
    if($row){
    $status=”중복“;
    $st=”1″;
    }else{
    $status=”신규“;
    $st=”2″;
    }
    //디렉토리 중복검사 끝
    //링크 디렉토리 처리 시작
    $link_tmp=explode(“..”,$directory);
    $link_cnt=count($link_tmp);
    if($link_cnt>1){
    $link_st=”링크”;
    $dir_cnt=$link_cnt-2;
    $directory=$link_tmp[$dir_cnt];
    $directory=eregi_replace(‘^/’,”,$directory);
    if(!$mv_dir) $mv_dir=$up_dir;
    }else{
    $link_st=”정상”;
    $now=time();
    $level_cnt=explode(“/”,$directory);
    $level_cnt=count($level_cnt)-1;
    if($st==”2″){
    $lst=”y”;
    $sql=”insert into $cat_table(parent,level,pname,dir,rno,regdate,link) values(‘$view[no]’,’$level_cnt’,’$d_name’,’$directory’,0,’$now’,0)”;
    mysql_query($sql);
    echo”$sql
    “;
    }
    //링크 디렉토리 처리 끝
    $sql=”select * from $visit_table where dir=’$directory'”;
    $rs=mysql_query($sql);
    $rw=mysql_num_rows($rs);
    if(!$rw){
    $dir_chk=”yes”;
    $mv_dir=$directory;
    echo”[$link_dir – $link_st($status)] —— $d_name – $directory
    “;
    }
    }
    }
    }
    }
    if(!$dir_chk){
    $dir_tt=explode(“/”,$up_dir);
    $dir_tt_cnt=count($dir_tt)-2;
    for($i=0;$i $dir_up=$dir_up.”/”.$dir_tt[$i];
    }
    if($dir_tt_cnt) $dir_up=”nate_robot.php?dir=directory”.$dir_up.”/”;
    else $dir_up=”nate_robot.php”;
    $sql=”insert into $visit_table values(”,’$up_dir’)”;
    mysql_query($sql);
    echo”


    마지막 카테고리 방문 : $dir_up”;
    echo”“;
    }else{
    $dir_up=”nate_robot.php?dir=directory/”.$mv_dir;
    echo”$dir_up”;
    echo”“;
    }
    }
    ?>