촌놈입니다... 고객분이 GitHub의 MarkDown 페이지를 긁어 오기를 요청 하였는데요... 모듈을 알아보던중 Snoopy.class.php 를 테스트 해보게 되었습니다.
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 을 추천드립니다.
'촌놈 - 취미로하는개발 > 웹' 카테고리의 다른 글
JSTL 날짜 포맷, 요일, 기간 계산 예제! (6) | 2018.11.28 |
---|---|
iframe 크기를 자식창에 맞추기, 상단을 일부 숨기기 - CSS (4) | 2018.11.24 |
PHP 코드 정리 사이트 소개 - PHP Formatter (0) | 2018.11.23 |
PHP mail 함수를 이용해서 메일 보내기 - 첨부파일 포함 (1) | 2018.11.23 |
[Java-JDK] 스프링 Scheduling 적용 하기 - Spring 5 (0) | 2018.11.23 |