首页 > 新闻中心 > 行业动态

凯发k8国际娱乐官网入口-凯发天生赢家一触即发官网|一个基于phpQuery的php通用采集类分享

发布时间:2025-10-15 17:59:57    次浏览

关注微信公众号PHP技术大全每天精彩分享不间断这是自己以前写的一个php的采集类,自己一直在用,自我感觉很简单很强大,只要懂一点点选择器的知识就可以采集任何页面了,也支持https页面,做简单的采集足够用了一、采集类源码?php/***通用列表采集类*版本V1.3*作者:JAE*/require_once '../phpQuery/phpQuery/phpQuery.php';class QueryList{private $pageURL;private $regArr = array();public $jsonArr = array();private $regRange;private $html;/************************************************* 参数: 页面地址 选择器数组 块选择器* 【选择器数组】说明:格式array('名称'=array('选择器','类型'),.......)* 【类型】说明:值 'text' ,'html' ,'属性'*【块选择器】:指 先按照规则 选出 几个大块 ,然后再分别再在块里面 进行相关的选择*************************************************/function QueryList($pageURL,$regArr=array(),$regRange=''){$this-pageURL = $pageURL;//为了能获取https://$ch = curl_init();curl_setopt($ch, CURLOPT_URL,$this-pageURL);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);$this-html = curl_exec($ch);curl_close($ch);if(!empty($regArr)){$this-regArr = $regArr; $this-regRange = $regRange;$this-getList();}}function setQuery($regArr,$regRange=''){$this-jsonArr=array();$this-regArr = $regArr;$this-regRange = $regRange;$this-getList();}private function getList(){$hobj = phpQuery::newDocumentHTML($this-html);if(!empty($this-regRange)){$robj = pq($hobj)-find($this-regRange);$i=0;foreach($robj as $item){while(list($key,$reg_value)=each($this-regArr)){$iobj = pq($item)-find($reg_value[0]);switch($reg_value[1]){case 'text':$this-jsonArr[$i][$key] = trim(pq($iobj)-text());break;case 'html':$this-jsonArr[$i][$key] = trim(pq($iobj)-html());break;default:$this-jsonArr[$i][$key] = pq($iobj)-attr($reg_value[1]);break;}}//重置数组指针reset($this-regArr);$i++;}}else{while(list($key,$reg_value)=each($this-regArr)){$lobj = pq($hobj)-find($reg_value[0]);$i=0;foreach($lobj as $item){switch($reg_value[1]){case 'text':$this-jsonArr[$i++][$key] = trim(pq($item)-text());break;case 'html':$this-jsonArr[$i++][$key] = trim(pq($item)-html());break;default:$this-jsonArr[$i++][$key] = pq($item)-attr($reg_value[1]);break;}}}}}function getJSON(){return json_encode($this-jsonArr);}}二、使用例子?phprequire 'Query/QueryList.class.php';//采集OSC的代码分享列表,标题 链接 作者$url = 'http://www.oschina.net/code/list';$reg = array('title'=array('.code_title a:eq(0)','text'),'url'=array('.code_title a:eq(0)','href'),'author'=array('img','title'));$rang = '.code_list li';$hj = new QueryList($url,$reg,$rang);$arr = $hj-jsonArr;print_r($arr);//如果还想采当前页面右边的 TOP40活跃贡献者 图像,得到JSON数据,可以这样写$reg = array('portrait'=array('.hot_top img','src'));$hj-setQuery($reg);$json = $hj-getJSON();echo $json . 'hr/';//采OSC内容页内容$url = 'http://www.oschina.net/code/snippet_186288_23816';$reg = array('title'=array('.QTitle h1','text'),'con'=array('.Content','html'));$hj = new QueryList($url,$reg);$arr = $hj-jsonArr;print_r($arr);//就举这么多例子吧,是不是用来做采集很方便关注PHP技术大全,成长不止一点点!分享出去,让知识地带无限蔓延!