phpquery类php,一个基于phpQuery的php通用采集类分享
一、采集類源碼<?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);
}
}
二、使用例子
require?'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?.?"
";
//采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);
總結
以上是生活随笔為你收集整理的phpquery类php,一个基于phpQuery的php通用采集类分享的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php fopen 图片下载,php c
- 下一篇: php抽象的案例,php抽象类和抽象方法