촌놈입니다... 고객분이 GitHub의 MarkDown 페이지를 긁어 오기를 요청 하였는데요... 모듈을 알아보던중 Snoopy.class.php 를 테스트 해보게 되었습니다.


실습환경

 - PHP 5.6.9

 - 가비아 호스팅

 - Snoopy.class.php 다운로드 링크

   https://sourceforge.net/projects/snoopy/


GET

<?php
/*
* include, require 이용시에는 절대-상대경로를 잘 이해 해야 함
* include : 포함 할 파일이 없어도 진행
* include_once : 같은 파일일 여러번 지정 되어도 한번만 로딩 (include 확장)
* require : 포함 할 파일이 없으면 에러
* require_once : 같은 파일일 여러번 지정 되어도 한번만 로딩 (require 확장) - 성향이 있겠으나 막장 개발을 방지 하기 위해서 추천
*/

// include $_SERVER['DOCUMENT_ROOT'].'/lib/Snoopy.class.php';
// include_once 'lib/Snoopy.class.php';
//require($_SERVER['DOCUMENT_ROOT'].'/lib/Snoopy.class.php');
require_once('lib/Snoopy.class.php');

$snoopy = new Snoopy;

// 헤더값에 따라 403 에러가 발생 할 경우 셋팅
$snoopy->agent = $_SERVER['HTTP_USER_AGENT'];
$snoopy->referer = "https://infotake.tistory.com";

$snoopy->fetch('https://infotake.tistory.com');

/* 모두 가져오기
$html = $snoopy->results;
echo $html;
 */

/*
 * 정규식 가져오기 (일부 사이트는 방지가 되어 있을 수 있으니 정규식 지정전에 전체 가져오기를 해보세요)
 */
preg_match('/<!doctype html>(.*?)<\/html>/is', $snoopy->results, $html);
echo $html[0];
?>


POST

<?php require_once('lib/Snoopy.class.php'); $snoopy = new Snoopy; // 헤더값에 따라 403 에러가 발생 할 경우 셋팅 $snoopy->agent = $_SERVER['HTTP_USER_AGENT']; $snoopy->referer = "https://infotake.tistory.com"; $snoopy->httpmethod = "POST"; // GET 지정시 GET으로 동작 $params = array("page" => "2"); $snoopy->submit( "https://infotake.tistory.com/category/%EC%B4%8C%EB%86%88-%ED%9B%84%EA%B8%B0%EB%B0%8F%EB%A6%AC%EB%B7%B0", $params ); // 한글이 포함될 경우 UTF-8 인코딩 필요 /* * 정규식 가져오기 (일부 사이트는 방지가 되어 있을 수 있으니 정규식 지정전에 전체 가져오기를 해보세요) */ preg_match('/<!doctype html>(.*?)<\/html>/is', $snoopy->results, $html); echo $html[0]; ?>


위와 같이 GET, POST를 알아 봤습니다. 이외에도 여러가지 기능이 있습니다. 그리고 일부 사이트 경우 외부 노출을 제한한 경우가 있으며 이럴때는 agent 값을 셋팅 하시면 문제 없이 가져와지네요 ^^


 - fetchtext : 텍스트만 가져오기 (태그제거)

 - submittext : 파라미터 전송, 텍스트만 가져오기 (태그제거)



※ 결국 iframe 으로 가져오는걸 하였네요 단순 보여주기는 Snoopy.class 를 이용하면되지만 해당 사이트내에서 이동이 발생하면 결국 URL 문제가 생기기때문에 iframe 을 추천드립니다.


블로그 이미지

촌놈 개발자 일기

개발자로서 살아가는 느낌과 정보를 공유 합니다

,