웹스쿨
CURL 웹 크롤링 데이터 수집 - 1단계(스누피 사용) 본문
반응형
php 크롤링 라이브러리중에 스누피(snoopy) 라는 녀석이 있습니다.
이 스누피 안에 기본적으로 CURL 이 탑재되어 있습니다.
이 스누피를 이용하면 크롤링에 대한 세부옵션을 설정하여 데이터를 긁어올 수 있습니다.
아래 소스를 보시면 별의별 삽질을 한 흔적이 다 있습니다.
- 로그인 처리후 긁어오기
- IP가 막힌경우 프록시 서버를 거쳐서 긁어오기
- 쿠키나 세션이 필요한 경우 데이터를 굽고 들어가기
클라우드페어(CloudFlare) 서버를 제외하곤 왠만한 사이트는 다 긁어와졌습니다.
아래함수는 일단 게시판의 리스트/상세를 긁어올 목적으로 제작한 함수입니다.
function getSiteString_snoopy($url){include_once "../plugin/snoopy/Snoopy.class.php";$snoopy = new Snoopy();/*// 스누피 로그인 처리후 긁어오기$__s=new snoopy;$url=긁어올url;$s[‘account_id’]=“내 아이디”;$s[‘password’]=“내 비밀번호”;$__s->submit($url,$s);$__s->setcookies();$__s->fetch(“http://www.linkprice.com/AC/index.htm”);*//*# 로그인 후 긁어오기# 스누피 이미지 저장하는 샘플$snoopy->fetch('http://www.8725.com/product/admin/8725_files/');$f = fopen("./images/a.jpg",'w');fwrite ($f,$snoopy->results);fclose ($f);*///$snoopy->proxy_host = "175.118.112.51";//$snoopy->proxy_port = "80";//홍콩 202.77.57.124 3128 -0.00s//홍콩 218.213.166.218 81 0.79s//홍콩 124.244.77.129 80 1.03s//홍콩 113.255.49.49 80 1.08s//홍콩 223.19.212.30 80 1.30s/*$snoopy->agent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)";$snoopy->referer = "http://www.jonasjohn.de/";*//*$snoopy->referer = $url;$snoopy->cookies["PHPSESSID"] = "umnl57bifigsukev73epoklr86";$snoopy->cookies["2a0d2363701f23f8a75028924a3af643"] = "MTQxLjEwMS44NC4xMjg";$snoopy->cookies["__cfduid"] = "d64593d742958b3e1e4babbb13aabceea1456209886";$snoopy->cookies["_ga"] = "GA1.2.234414765.1456209892";$snoopy->cookies["_gat"] = "1";$snoopy->submit($url);*//*fetch($URI) : 입력받은 주소의 html소스를 텍스트 형식으로 $results에 저장합니다.fetchlinks($URI) : fetch와 비슷하지만 링크만을 배열의 형태로 $results에 저장합니다. 링크를 타고가야할 필요가 있는 작업에 유용하겠죠?fetchtext($URI) : fetch와 비슷하지만 스크립트를 제외한 텍스트만 $results에 저장합니다.fetchform($URI) : fetch와 비슷하지만 폼 부분을 html형식으로 $results에 저장합니다.submit($URI, $formvars="", $formfiles="") : 폼에 여러 변수를 붙여서 전송 할 수 있습니다. 보통 많은 로그인이 폼으로 이루어지므로 유용하게 사용됩니다.setcookies() : 종종 쿠키정보를 유지해야하는 경우가 있는데 그럴때 사용합니다.*/$parse_url = parse_url($url);$protocol = $parse_url['scheme']; // http , https$host = $parse_url['host']; // naver.com$path = $parse_url['path']; // /data/file/test.jpgif ( $parse_url['query'] != "" ) {$path .= "?" . $parse_url['query'];}$refer = $protocol . "://" . $host;//echo "refer = {$refer}";exit;$snoopy->referer = $refer;//$snoopy->agent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)";$snoopy->agent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)";$snoopy->submit($url);$snoopy->setcookies();$snoopy->fetch($url);$result = $snoopy->results;//$headers = $snoopy->headers;//print_r($headers);exit;if ( $result == "" || strpos($result, "CloudFlare") !== false ) {$result = getSiteString_curl($url);}return $result;}
이 게시글은
https://webschool.kr/?v=board_view&board_key=47&idx=763
에서 작성한 글입니다. 소스코드의 경우 해당 블로그에서 이뿌게 노출이 되지 않을 수 있사오니, 위 링크로 들어오셔서 보시길 바랍니다.
https://webschool.kr/?v=board_view&board_key=47&idx=763
에서 작성한 글입니다. 소스코드의 경우 해당 블로그에서 이뿌게 노출이 되지 않을 수 있사오니, 위 링크로 들어오셔서 보시길 바랍니다.
반응형
'개인 프로젝트 > Auto 크롤링' 카테고리의 다른 글
CURL 웹 크롤링 데이터 수집 - 수집설정화면 (0) | 2023.03.29 |
---|---|
CURL 웹 크롤링 데이터 수집 프로그램 일지 (0) | 2023.03.29 |