1. コレクションのソースコード
コードをコピーします コードは次のとおりです:
/**
*一般リストコレクションクラス
*バージョン V1.3
*作者: JAE
*/
require_once '../phpQuery/phpQuery/phpQuery.php';
class QueryList{
private $pageURL;
private $regArr = array();
public $jsonArr = array();
private $regRange;
private $html;
/**************************************************
* パラメータ:ページアドレスセレクター配列ブロックセレクター
* [セレクター配列] 説明: 形式 array("name"=>array("selector", "type"),....)
説明: 値 "text"、" html", "attribute"
*[ブロック選択デバイス]: ルールに従っていくつかの大きな部分を選択し、ブロック内で関連する選択を実行することを指します
****** ******** ***********************************/
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();
}
プライベート関数 getList()
{
$hobj = phpQuery::newDocumentHTML($this->html);
if(!empty($this->regRange))
{
$robj = pq($hobj )->find($this->regRange);
$i=0;
foreach($robj as $item)
{
while(list, $reg_value)=each($this- >regArr))
{
$iobj = pq($item)->find($reg_value[0]);
switch($reg_value[1])
{
case 'text':
$this- >jsonArr[$i][$key] =rim(pq($iobj)->text());
Break;
case 'html':
$this->jsonArr[$i][$key ] = トリム(pq($iobj)->html());
ブレーク;
デフォルト:
$this->jsonArr[$i][$key] = pq($iobj)->attr($ reg_value[1]);
ブレーク;
}
//重置数组指针
reset($this->regArr);
$i++;
}
}
else
{
while(list($key,$reg_value)=each($this->regArr))
{
$lobj = bj)->find($reg_value[0]);
$i=0;
foreach($lobj as $item)
{
switch($reg_value[1])
{
case 'text':
$this-&g t;jsonArr[$i++][$key] =rim(pq($item)->text());
Break;
'html':
$this->jsonArr[$i++][$key] = trim(pq($item)-> ;html());
ブレーク;
デフォルト:
$this->jsonArr [$i++][$key] = pq($item)->attr($reg_value[1]);
ブレーク;
}
}
}
}
}
function getJSON()
{
return json_encode($this->jsonArr);
}
}
二、使用例
复制代価代価如下:
'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);
//たくさんの例を挙げましたが、コレクションに使用すると非常に便利です
http://www.bkjia.com/PHPjc/751515.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/751515.html技術記事 1. コレクション クラスのソース コードを次のようにコピーします。 ?php /**・汎用リスト収集クラス ・バージョン V1.3 ・作者:JAE*/ require_once '../phpQuery/phpQuery/phpQuery.php';