thinkphp实现自动采集功能的三种方法:
方法一:QueryList
个人感觉比较好用,采集详情比较不错的选择,但是采集复杂一点的列表,不好用。具体使用:
控制器示例:
public function index(){ // 使用采集类 // 使用手册 :http://www.php.cn/php/php-QueryList3-ThinkPHP.html import('Org.QL.QueryList'); $url = "http://www.zyctd.com/gqqg/"; $reg = array(); $reg['title'] = array('.sulist_title','text'); $reg['shuliang'] = array('.su_li1','html'); $obj = new \QueryList($url,$reg); $data = $obj->jsonArr; // foreach($data as $v){ // echo "<br>".$v['title'].'___'.$v['shuliang']."<br>"; // } p($data); }
相关推荐:《ThinkPHP教程》
方法二:simple_html_dom
这个方法比较适合采集一点结构简单的页面,HTML标签的类名比较明确的页面,还不错。具体使用:
控制器示例:
public function index(){ // 参考文档:http://microphp.us/plugins/public/microphp_res/simple_html_dom/manual.htm#section_quickstart // 下载地址:https://github.com/samacs/simple_html_dom/edit/master/simple_html_dom.php // 使用方法:http://www.thinkphp.cn/topic/21635.html import("Org.Util.simple_html_dom", '', '.php'); $html = file_get_html('http://www.zyctd.com/gqqg/'); $ret = $html->find('.supply_list_box ul',0)->first_child(); foreach($ret as $v){ echo $v; }; }
方法三:获取页面HTMl,进行正则匹配采集
举例一个Demo:
采集一个页面:
http://www.zyctd.com/gqqg/
我要获取上面的四个信息:标题,数量,时间,跳转链接。
获取这些信息,通过上面两种方法都采集不到,最后才选用的正则来采集。具体方法:
public function index(){ $url = "http://www.zyctd.com/gqqg/"; // http://www.zyctd.com/gqqg-p1.html $supplyDB = M('supply'); $urlList = array(); $array = array(); for($x=1; $x<=1; $x++) { array_push($urlList,"http://www.zyctd.com/gqqg-p".$x.".html"); }; foreach($urlList as $v){ $curPageList = $this->getInfo($v); array_push($array,$curPageList); }; foreach($array as $v){ foreach($v as $vv){ //echo $vv['title']."__".$vv['weight']."__".$vv['time']."<br>"; $data = array(); $data['title'] = $vv['title']; $data['weight'] = $vv['weight']; $data['add_time'] = $vv['add_time']; $data['url'] = $vv['url']; //$res = $supplyDB->add($data); //echo $res; echo "<p><span style='display:inline-block; width:110px;'>".$vv['title']."</span> <span style='display:inline-block; width:110px;'>".$vv['weight']."</span> <span style='display:inline-block; width:110px;'>".$vv['add_time']."</span> <span style='display:inline-block; width:110px;'>".$vv['url']."</span></p>"; } } // 获取信息 //$curPageList = $this->getInfo($html); //p($curPageList); } private function getInfo($url){ $html = $this->getHtml($url); $array = array(); // 匹配所有的标题 preg_match_all("#<divclass=\"sulist_title\"><i></i><span>(.*?)</span></div>#",$html,$matches); $all_title = $matches[1]; preg_match_all("#<i>发布时间:</i><span>(.*?)</span>#",$html,$matches); // 匹配所有的发布时间 $all_time = $matches[1]; // 匹配所有的求购数量 preg_match_all("#<i>求购数量:</i><span>(.*?)</span>#",$html,$matches); $all_weight = $matches[1]; // 匹配跳转链接 preg_match_all("#<atarget=\"_blank\"href=\"(.*?)\">#",$html,$matches); $all_url = $matches[1]; // 组合 foreach($all_title as $k => $v){ $arr = array(); $arr['title'] = $v; $arr['weight'] = $all_weight[$k]; $arr['add_time'] = $all_time[$k]; $arr['url'] = $all_url[$k]; array_push($array,$arr); } return $array; } private function getHtml($url){ $html = file_get_contents($url); $html = preg_replace("#\n#","",$html); $html = preg_replace("#\r#","",$html); $html = preg_replace("#\\s#","",$html); return $html; }
위 내용은 thinkphp 자동 수집 구현 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

WebStorm Mac 버전
유용한 JavaScript 개발 도구

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구