이 기사의 예에서는 PHP 도둑 프로그램의 설계 및 구현 방법을 설명합니다. 참고를 위해 모든 사람과 공유하세요. 자세한 내용은 다음과 같습니다.
사실 저는 항상 암시적인 사진으로 웹사이트를 만들고 싶었습니다. 이전 아이디어는 CMS를 만들어 직접 사진을 업로드하는 것이었습니다. .
이 일을 시작할 땐 의욕이 하나도 없었어요. 그 후 포기하고 나중에 CURL을 공부했습니다. 어쨌든, 이 아이디어를 구현하는 것이 더 좋을 것입니다.
PHP를 사용하여 사진을 훔치는 것은 양말과 샌들을 신는 것과 같습니다. 괜찮아도 보기엔 마음이 아프네요.
먼저 PHP 도둑 프로그램의 설계에 대해 이야기하겠습니다. PHP는 멀티스레딩을 지원하지 않으므로 순서대로만 수행할 수 있습니다.
대상 웹사이트의 HTML 페이지 가져오기 + HTML 구문 분석 페이지가 이미지 저장소에 연결되고 바이너리 모드로 읽고 로컬에 저장하고 이름 바꾸기 == 프로세스 확인
이제 두 가지 방법으로 프로그램을 실행합니다.
첫 번째 방법: 브라우저를 사용하여 프로그램을 실행합니다. (대개 프로그램이 정지될 수 있습니다. 시간 제한과 메모리 크기만 설정하면 괜찮습니다. 기다리기가 어려울 것입니다.)
다른 옵션: PHP 시작 명령줄에서 (PHP 타임아웃 문제 없음)
/** *HTML解析类 *author:Summer *date:2014-08-22 **/ class Analytical{ public function __construct() { require_once('Class/SimpleHtmlDom.class.php'); $this->_getDir(); } private function _getDir() { $dir = "../TMP/HTML/Results/1"; $imgBIG = "../TMP/IMG/JPG/BIG"; $it = new DirectoryIterator($dir."/"); foreach($it as $file) { //用isDot ()方法分别过滤掉“.”和“..”目录 if (!$it->isDot()) { $dirs = $dir."/".$file ; $tmp = explode(".",$file); $html = file_get_html($dirs); $ulArr = $html->find('img'); foreach($ulArr as $key=>$value) { if ($value->class == "u") { $url = <a>http://</a>www.jb51.net.$value->src; $infomation = file_get_contents($url); $result = $this->saveHtml($infomation, $imgBIG, $tmp['0'].".jpg"); if($result) { echo $file."OK\n"; } } } } } } private function saveHtml($infomation,$filedir,$filename) { if(!$this->mkdirs($filedir)) { return 0; } $sf = $filedir."/".$filename; $fp=fopen($sf,"w"); //写方式打开文件 return fwrite($fp,$infomation); //存入内容 fclose($fp); //关闭文件 } //创建目录 private function mkdirs($dir) { if(!is_dir($dir)) { if(!$this->mkdirs(dirname($dir))){ return false; } if(!mkdir($dir,0777)){ return false; } } return true; } } new Analytical();
위는 HTML 페이지에서 IMG 연결 주소를 얻는 과정입니다.
에서는 두 가지 중요한 사항을 사용합니다.
1. PHP의 DOM 구문 분석 확장 simplehtmldom
2. PHP의 디렉터리 반복자
이 두 가지를 이해하세요. 본 분석 수업에는 어려움이 없습니다.
파싱해야 하는 페이지를 가져오는 방법을 말씀하시는 건가요?
사실 원리는 위와 같습니다. 주로 페이지의 URL을 가져온 다음 CURL을 통해 페이지를 읽고 HTML 문자열
을 반환한 다음 저장 함수 패키지를 통해 HTML 페이지를 로컬에 저장합니다.
페이지에 있는 사진을 수집하고 싶어서(다른 사람이 핫링크하는 것을 방지하기 위해) 디자인이 비교적 복잡합니다.
그리고 분리해야 하는 이유는 simplehtmldom 객체가 매우 크기 때문에 분리하면 프로세스가 더 명확해지기 때문입니다.
어떤 사람들은 확실히 이렇게 말할 것입니다. 그렇다면 일반 매칭을 사용하여 HTML을 로컬에 저장하는 단계를 건너뛰는 BINGO! 나는 정규 규칙을 작성하는 것을 귀찮게 할 수 없습니다.
PHP 도둑 프로그램의 설계 및 구현에 대한 자세한 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!