基于PHPQuery的PHP通用采集类
鸟欲高飞先振翅,人求上进先读书。以下是小编为大家搜索整理的基于PHPQuery的PHP通用采集类,希望能给大家带来帮助!更多精彩内容请及时关注我们应届毕业生考试网!
一、采集类源码
代码如下:
/**
*通用列表采集类
*版本V1.3
*作者:JAE
*/
require_once '../phpQuery/phpQuery/';
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/';
//采集OSC的'代码分享列表,标题 链接 作者
$url = "";
$reg = array("title"=>array("_title a:eq(0)","text"),"url"=>array("_title a:eq(0)","href"),"author"=>array("img","title"));
$rang = "_list li";
$hj = new QueryList($url,$reg,$rang);
$arr = $hj->jsonArr;
print_r($arr);
//如果还想采当前页面右边的 TOP40活跃贡献者 图像,得到JSON数据,可以这样写
$reg = array("portrait"=>array("_top img","src"));
$hj->setQuery($reg);
$json = $hj->getJSON();
echo $json . "
";
//采OSC内容页内容
$url = "_186288_23816";
$reg = array("title"=>array("le h1","text"),"con"=>array("ent","html"));
$hj = new QueryList($url,$reg);
$arr = $hj->jsonArr;
print_r($arr);
-
php中怎么实现回删功能
导语:以下的'是本站小编为大家整理的php实现回删功能的实例,希望对你有所帮助。functiondel(){varinput=lementsByName('inp')[0]e;alert(tructor);}</script><table><tr><tdonclick="inpu(1)">1</td><tdonclick="inpu(2)">2</td><tdonclick="inpu(3)">...
-
ini函数解析
PHP独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。以下是小编为大家搜索整理的ini函数解析,希望能给大家带来帮助!更多精彩内容请及时关注我们应届毕业生考试网!t、ini_get_all、ini_restore。个人感觉最有用的就...
-
PHP中超全局变量$GLOBALS和global的区别
人之所以能,是相信能。努力总是会有收获的。下面是小编整理的PHP中超全局变量$GLOBALS和global的区别,希望对大家有用,更多消息请关注应届毕业生网。一、超全局变量$GLOBALSPHP超全局变量有很多,如下的都属于超全局变量(Superglobal):$GLOBALS,$_SERVER,$_GET,$_POST,$_...
-
ThinkPHP中自动验证
学无止境,刚开始学习PHP会觉得简单,但是越学会越难。下面是小编整理的关于ThinkPHP中自动验证的知识,希望对大家有用,更多消息请关注应届毕业生网。ThinkPHP中自动验证:array(‘字段’,‘验证规则’,‘错误提示’[,‘验证条件&rsqu...