>  기사  >  백엔드 개발  >  스누피 기반 PHP는 웹사이트 코딩을 거의 완벽하게 획득합니다.

스누피 기반 PHP는 웹사이트 코딩을 거의 완벽하게 획득합니다.

WBOY
WBOY원래의
2016-07-25 09:08:53919검색
스누피 기반 PHP는 웹사이트 코딩을 거의 완벽하게 획득합니다.
PHP 크롤러에 사용하면 코딩 정확도가 99.9%로 아직 얻을 수 없는 부분이 있으니 개선해주세요.
코드 소스: Zhanyun.com www.siteyun.com
먼저 인터넷에 접속하여 Snoopy.class.php를 다운로드하세요.
호출 방법: echo $go->getCharset(); ?>

[코드]url=$url; } //打开网站 개인 함수 열기($url) { if($this->요청!==null) { if($this->요청->상태==200) { 사실을 반환; } 또 다른 { 거짓을 반환; } } 또 다른 { $this->request=new 스누피(); $this->요청->가져오기($url); if($this->요청->상태==200) { $this->요청->결과=strtolower($this->요청->결과); $charset=$this->getCharset(); if($charset!="utf-8") { if($charset=="windows-1252") { $this->요청->결과=$this->uni_decode($this->요청->결과); } 또 다른 { $this->요청->결과=mb_convert_encoding($this->요청->결과,"UTF-8",$charset); } } 사실을 반환; } 또 다른 { 거짓을 반환; } } } //获取网站제목,키워드,설명 공개 함수 getWebinfo() { $정보=배열( '제목'=>'', '키워드'=>'', '설명'=>'', 'ip'=>'' ); if(!$this->open($this->url)){return $info;exit;} // print_r($this->request->results);exit; preg_match('/([^>]*)/si', $this->request->results, $titlematch ); if (isset($titlematch) && is_array($titlematch) && count($titlematch) > 0) { $info['title'] = Strip_tags($titlematch[1]); } preg_match_all('/"]*)"?[s]*' . 'content="?([^>"]*)"?[s]*[/]?[s]*>/si', $this->요청->결과, $match); $ft=0; foreach($match[1]를 $mt로) { if($mt=="키워드" || $mt=="설명") { $ft=1; } } if($ft==0) { preg_match_all('/"]*)"?[s]*name="?' . '([^>"]*)"?[s]*[/]?[s]*>/si', $this->요청->결과, $match); if (isset($match) && is_array($match) && count($match) == 3) { $originals = $match[0]; $names = $match[2]; $values ​​= $match[1]; if (count($originals) == 개수($names) && count($names) == 개수($values)) { $metaTags = 배열(); for ($i=0, $limiti=count($names); $i htmlentities($originals[$i]), '값' => $값[$i] ); } } } } 또 다른 { if (isset($match) && is_array($match) && count($match) == 3) { $originals = $match[0]; $names = $match[1]; $values ​​= $match[2]; if (count($originals) == 개수($names) && count($names) == 개수($values)) { $metaTags = 배열(); for ($i=0, $limiti=count($names); $i htmlentities($originals[$i]), '값' => $값[$i] ); } } } }$결과 = 배열( 'metaTags' => $metaTags ); if(isset($result['metaTags']['keywords']['value'])) { $info['keywords']=$result['metaTags']['keywords']['value']; } 또 다른 { $info['키워드']=""; } if(isset($result['metaTags']['description']['value'])) { $info['desc']=$result['metaTags']['description']['value']; } 또 다른 { $info['desc']=""; } $domain=preg_replace('/http:///si', '', $this->url); $ip=@gethostbyname($도메인); $ip_arr=폭발(".", $ip); if(수($ip_arr)==4) { $info['ip']=$ip; } $정보를 반환합니다. } 공개 함수 t($string,$o) { for($i=0;$iopen($this->url)){return false;exit;} //首先从html获取编码 preg_match("/요청->결과,$temp) ? strtolower($temp[1]):""; if($temp[1]!="") { if(in_array($temp[1], $this->charset_arr)) { if($temp[1]=="gb2312") { $tmp_charset=$this->t($this->요청->결과,$temp[1]); if($tmp_charset==$temp[1]) { $temp[1] 반환; } } 또 다른 { $temp[1] 반환; } } } if(!empty($this->요청->헤더)) { //从header中获取编码 $hstr=strtolower(implode("


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.