...控项。/home/orabbix/conf/query.props这个文件中有一个QueryList,提供了需要的监控项,这个时候我们需要监控闪回区的空间使用,我们定义监控项为:arch_area_usage_perQueryList=xxxxxxx, arch_area_usage_per然后对于这个监控项,我...
thinkphp实现自动采集功能的三种方法:
方法一:QueryList
个人感觉比较好用,采集详情比较不错的选择,但是采集复杂一点的列表,不好用。具体使用:
控制器示例:public function index(){
// 使用采集类
// 使用手册 :/php/php-QueryList3-ThinkPHP.html
import('Org.QL.QueryList');
$url = "/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 "
".$v['title'].'___'.$v['shuliang']."
";
// }
p($data);
}
相关推荐:《ThinkPHP教程》
方法二:simple_html_dom
这个方法比较适合采集一点结构简单的页面,HTML标签的类名比较明确的页面,还不错。具体使用:
控制器示例:public function index(){
// 参考文档:http://microphp.us/plugins/public/microphp_res/simple_html_dom/manual.htm#section_quickstart
// 下载地址:/samacs/simple_html_dom/edit/master/simple_html_dom.php
// 使用方法:/topic/21635.html
import("Org.Util.simple_html_dom", '', '.php');
$html = file_get_html('/gqqg/');
$ret = $html->find('.supply_list_box ul',0)->first_child();
foreach($ret as $v){
echo $v;
};
}
方法三:获取页面HTMl,进行正则匹配采集
举例一个Demo:
采集一个页面:
/gqqg/
我要获取上面的四个信息:标题,数量,时间,跳转链接。
获取这些信息,通过上面两种方法都采集不到,最后才选用的正则来采集。具体方法:public function index(){
$url = "/gqqg/";
// /gqqg-p1.html
$supplyDB = M('supply');
$urlList = array();
$array = array();
for($x=1; $x<=1; $x++) {
array_push($urlList,"/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']."
";
$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 "
".$vv['title']."
".$vv['weight']."
".$vv['add_time']."
".$vv['url']."
";
}
}
// 获取信息
//$curPageList = $this->getInfo($html);
//p($curPageList);
}
private function getInfo($url){
$html = $this->getHtml($url);
$array = array();
// 匹配所有的标题
preg_match_all("#(.*?)
#",$html,$matches);