thinkphp自动采集怎么实现

发布时间 - 2019-08-22 00:00:00    点击率:

thinkphp实现自动采集功能的三种方法:

方法一:QueryList

个人感觉比较好用,采集详情比较不错的选择,但是采集复杂一点的列表,不好用。具体使用:

控制器示例:

public function index(){
    // 使用采集类
    // 使用手册 :http://www./php/php-QueryList3-ThinkPHP.html
    import('Org.QL.QueryList');
    $url = "http://www.zyctd.com/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
    // 下载地址:https://github.com/samacs/simple_html_dom/edit/master/simple_html_dom.php
    // 使用方法:http://www.think/topic/21635.html
    import("Org.Util.simple_html_dom", '', '.php');
    $html = file_get_html('http://www.zyctd.com/gqqg/');
    $ret = $html->find('.supply_list_box ul',0)->first_child();
    foreach($ret as $v){
        echo $v;
    };
}

方法三:获取页面HTMl,进行正则匹配采集

举例一个Demo:

采集一个页面:

http://www.zyctd.com/gqqg/

我要获取上面的四个信息:标题,数量,时间,跳转链接。

获取这些信息,通过上面两种方法都采集不到,最后才选用的正则来采集。具体方法:

public function index(){
    $url = "http://www.zyctd.com/gqqg/";
    // http://www.zyctd.com/gqqg-p1.html
    $supplyDB = M('supply');    
    $urlList = array();
    $array = array();
    for($x=1; $x<=1; $x++) {
        array_push($urlList,"http://www.zyctd.com/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); $all_title = $matches[1]; preg_match_all("#发布时间:(.*?)#",$html,$matches); // 匹配所有的发布时间 $all_time = $matches[1]; // 匹配所有的求购数量 preg_match_all("#求购数量:(.*?)#",$html,$matches); $all_weight = $matches[1]; // 匹配跳转链接 preg_match_all("##",$html,$matches); $all_url = $matches[1]; // 组合 foreach($all_title as $k => $v){ $arr = array(); $arr['title'] = $v; $arr['weight'] = $all_weight[$k]; $arr['add_time'] = $all_time[$k]; $arr['url'] = $all_url[$k]; array_push($array,$arr); } return $array; } private function getHtml($url){ $html = file_get_contents($url); $html = preg_replace("#\n#","",$html); $html = preg_replace("#\r#","",$html); $html = preg_replace("#\\s#","",$html); return $html; }


# thinkphp  # html  # http  # 发布时间  # 跳转  # 好用  # 我要  # 下载地址  # 两种  # 三种  # 还不错  # 后才  # 使用手册 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何用IIS7快速搭建并优化网站站点?  Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置  Laravel如何自定义错误页面(404, 500)?(代码示例)  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例  Laravel如何配置Horizon来管理队列?(安装和使用)  Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解  微信小程序 require机制详解及实例代码  javascript日期怎么处理_如何格式化输出  Swift开发中switch语句值绑定模式  Mybatis 中的insertOrUpdate操作  高性价比服务器租赁——企业级配置与24小时运维服务  原生JS实现图片轮播切换效果  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  简历在线制作网站免费版,如何创建个人简历?  如何快速搭建FTP站点实现文件共享?  如何快速搭建自助建站会员专属系统?  Python进程池调度策略_任务分发说明【指导】  如何自定义建站之星模板颜色并下载新样式?  Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】  DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解  Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】  Laravel API资源类怎么用_Laravel API Resource数据转换  Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  韩国服务器如何优化跨境访问实现高效连接?  公司网站制作价格怎么算,公司办个官网需要多少钱?  Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理  如何为不同团队 ID 动态生成多个“认领值班”按钮  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  浅谈javascript alert和confirm的美化  javascript基本数据类型及类型检测常用方法小结  百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  JavaScript如何实现错误处理_try...catch如何捕获异常?  JavaScript常见的五种数组去重的方式  Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作  laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析  Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制  移动端脚本框架Hammer.js  ,网页ppt怎么弄成自己的ppt?  canvas 画布在主流浏览器中的尺寸限制详细介绍  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  如何快速搭建高效香港服务器网站?  js代码实现下拉菜单【推荐】  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  浅述节点的创建及常见功能的实现  如何在宝塔面板中创建新站点?  Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤  实现点击下箭头变上箭头来回切换的两种方法【推荐】