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驱动无法加载错误解决方法_驱动签名验证失败处理步骤
实现点击下箭头变上箭头来回切换的两种方法【推荐】


'add_time'] = $vv['add_time'];
$data['url'] = $vv['url'];
//$res = $supplyDB->add($data);
//echo $res;
echo "