ThinkPhp PhpQuery 采集功能

浏览:23957 最后更新:2016-10-29 14:00 分类:类库 关键字: 采集 phpquery
这个是采集到一个 列表,现在这部分走了数据库,以采集项目形式工作,后面有时间会继续更新,phpquery 起始还有一个比较强的功能我上次没有介绍在内,那就是服务器端模板处理。具体本例子里面有用到有兴趣同学可以研究。    function collect(){
        $collect=D('collect');
        $id=$_GET['id'];
        $vo=$collect->where("id = $id")->find();
        if ($vo['charset']=="UTF-8") {
             header("Content-type: text/html; charset=utf-8");
        }else{
             header("Content-type: text/html; charset=GB2312");
        }
        set_time_limit(0);
        import ( "@.ORG.QueryList" );

        $url=$vo['url'];
        $title=$vo['list_title'];
        $href=$vo['list_url'];
        $reg = array("title"=>array($title,"text"),"url"=>array($href,"href"));
        $rang=$vo['list_list'];
        $hj = new QueryList($url,$reg,$rang);
        $arr = $hj->jsonArr;
        foreach ($arr as $k => $v) {
            if(substr($val['url'],0,7) != 'http://'){
                $arr[$k]['url'] = $vo['site'].$v['url'];
            }
            unset($v); // 最后取消掉引用
        }

        array_splice($arr, 10); 
        $doc = phpQuery::newDocument("<div/>");


        $doc["div"]->append("<ul><li>新闻标题</li><li>新闻地址</li></ul>");
        foreach($arr as $key=>$product) {
            $doc["div ul"]->append("<li>$product[title]</li><li><a href='$product[url]'>$product[url]</a></li>");
        }
        $doc["div"]->attr('style',' text-align:center;width:100%;float:left;border:1px solid #96c2f1;background:#eff7ff;margin-bottom:20px;');
        $doc["div ul"]->find("li:even")->attr("style","width:48%; float:left; padding:5px; list-style:none;");
        $doc["div ul"]->find("li:odd")->attr("style","width:50%; text-align:center; float:left; padding:5px; list-style:none;");

        $this->assign('doc',$doc);

        $curl = $arr[0]['url'];
        $list_content=$vo['list_content'];

        $reg = array("title"=>array(".detail-hd h2","text"),"con"=>array($list_content,"html"));
        $hj = new QueryList($curl,$reg);
        $val = $hj->jsonArr;
        $this->assign('val',$val);


        $this->display();
    }
PS: 其他具体看例子把,数据库一起打包了,有兴趣同学可以私下联系我一起完善下,函数 getJSON ,jsonArr 这个2函数分别是转 json 数据,采集到内容算什么?我们可以直接采集到关联的用户信息做类似微博个人信息这样的弹窗=-=

下次完善自动采集写入数据库,采集进度,自动下载图片到服务器等等

以下为数据库结构CREATE TABLE `tp_collect` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `site` VARCHAR(255) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT '网站路径',
  `name` VARCHAR(50) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT '采集项目名称',
  `url` VARCHAR(255) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT '采集页面路径',
  `list_list` VARCHAR(255) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT '列表内页列表',
  `list_title` VARCHAR(255) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT '列表内页标题',
  `list_url` VARCHAR(255) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT '列表内页链接',
  `list_author` VARCHAR(255) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT '列表内页作者',
  `list_date` VARCHAR(255) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT '列表内页时间',
  `list_hits` VARCHAR(255) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT '列表内页面访问量',
  `list_content` VARCHAR(255) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT '列表内页内容',
  `list_order` VARCHAR(255) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT '列表内页面其他内容',
  `list_img` VARCHAR(255) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT '列表内容缩略图',
  `isdown` TINYINT(2) NOT NULL DEFAULT '0' COMMENT '是否下载图片',
  `downext` VARCHAR(255) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT '永许下载内容后缀',
  `lasturl` VARCHAR(255) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT '最后抓取地址',
  `testurl` VARCHAR(255) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT '测试抓取地址',
  `charset` VARCHAR(10) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT '抓取页面编码',
  `createtime` INT(11) NOT NULL COMMENT '创建时间',
  `updatetime` INT(11) NOT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=MYISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_bin

采集第一个列表的第一个文章的详细内容
评论( 相关
后面还有条评论,点击查看>>