반응형
기본적인 php curl 함수에 필요할만한 옵션을 몇가지 추가하여 함수로 만들어 보았습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | <?php // 페이지 크롤링 함수 (페이지주소, post값, 리퍼러, 헤더포함? (포함시 y), 쿠기파일 생성경로) function getPage($pageURL, $post=array(), $referer="", $header="", $cookieURL=""){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $pageURL); if ($referer != "") { $referer = getSiteHost($referer); curl_setopt($ch, CURLOPT_REFERER, $referer . "/"); } if ($header == "y") { curl_setopt($ch, CURLOPT_HEADER, true); } curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); if (count($post) > 0) { curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); } if ($cookieURL != "") { // 쿠키가 필요하다면, 쿠키 생성 폴더 검사 및 없을시 생성 과정도 포함하는게 좋을 듯. curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieURL); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieURL); } $result = curl_exec ($ch); curl_close($ch); return $result; } // 정확한 호스트를 얻기위해 편의상 쓰는 함수 function getSiteHost($pageURL) { $siteParts = parse_url($pageURL); return $siteParts['scheme'].'://'.$siteParts['host']; } ?> |
실제로 평소 어떤 페이지를 크롤링 및 파싱할 때 자주 사용하는 기능들을 모아서 만든 php curl 함수입니다.
post 전송, 리퍼러 지정, 쿠키처리 정도까지만 넣었고,
header 지정이나 uesragent 지정 등은 필요하다면 따로 넣어서 사용하면 될 듯 합니다.
일반적인 페이지 (+로그인이 필요한 페이지) 정도는 무리없이 파싱 작업이 가능할 것입니다.
반응형
'웹 개발 & 정보 > PHP' 카테고리의 다른 글
PHP 이미지 워터마크(텍스트&이미지) 삽입하기 (0) | 2020.11.10 |
---|---|
[PHP] 네이버 검색 API로 내 사이트에 뉴스 검색 결과 출력하기 (6) | 2018.08.28 |
[PHP] 텔레그램 api로 알림(push) 받기 (1) | 2018.03.04 |
[PHP] PHP Mailer로 메일 전송 (네이버 아이디 사용) (4) | 2017.10.20 |
[PHP] 헤더를 이용한 파일 다운로드 구현 (1) | 2017.10.19 |