php数据采集案例,PHP数据采集框架QueryList,使用案例~~~

QueryList不依赖任何框架和架构,它可以单独使用也可以引入到任意的PHP开发框架中去使用,如:Laravel、ThinkPHP;你可以使用它来构建简单的采集系统,也可以用它才构建高可用的分布式采集系统。它提供了丰富的基于CSS选择器的页面抽取API,完全模块化的设计,拥有强大的可扩展性。

172a25f42d2a5bc8b81267900a413188.png

URL:

http://www.huadongxww.net/list/news

采集规则:

{

"title": ["#content_list li h3 a","text"],

"pic": ["#content_list li .viewimg img","src"],

"desc": ["#content_list li p","text"],

"source": ["#content_list li .spanimg2","text"],

"publish_time": ["#content_list li .timeago","text"]

}

切片选择器:

例如:.posts>.post,可选

/**

* [getcaijidata 采集数据]

*/

/**

* [getcaijidata 采集数据]

*/

public function getcaijidata() {

//处理添加

if ($this->request->isPost()) {

//获取数据

$params = $this->request->post();

//验证地址

if(!isset($params['url']) || empty($params['url'])){

//返回数据

$data['code'] = 0;

$data['msg'] = '请填写URL';

return json($data);

}

//验证规则

if(!isset($params['rules']) || empty($params['rules'])){

//返回数据

$data['code'] = 0;

$data['msg'] = '请填写规则';

return json($data);

}

//处理规则

$params['rules'] = htmlspecialchars_decode($params['rules']);

$rules = json_decode($params['rules'], true);

//验证范切片选择器

if(!isset($params['range']) || empty($params['range'])){

$params['range'] = '';

}

//抓取数据

$html = QueryList::Query($params['url'], $rules, $params['range'])->html;

if(preg_match('/(GB2312|gb2312)/', $html)){

$data = QueryList::Query($params['url'], $rules, $params['range'], 'UTF-8', 'gb2312', true)->data;

} else {

$data = QueryList::Query($params['url'], $rules, $params['range'])->data;

}

//处理数据

$domain_arr = parse_url($params['url']);

$domain = $domain_arr['scheme'] . "://".$domain_arr['host'];

foreach ($data as $key => $value) {

//图片处理

if(isset($value['pic']) && !empty($value['pic'])){

if(!preg_match('/^(https|http)/', $value['pic'])){

$data[$key]['pic'] = $domain . $value['pic'];

}

}

//处理来源

if(isset($value['source']) && !empty($value['source'])){

$value['source'] = trim($value['source']);

$value['source'] = str_replace("来源:", '', $value['source']);

$value['source'] = str_replace("来源:", '', $value['source']);

$data[$key]['source'] = str_replace("来源", '', $value['source']);

}

//处理发布时间

if(isset($value['publish_time']) && !empty($value['publish_time'])){

$value['publish_time'] = str_replace("发布时间:", '', $value['publish_time']);

$value['publish_time'] = str_replace("发布时间:", '', $value['publish_time']);

$value['publish_time'] = str_replace("发布时间", '', $value['publish_time']);

$value['publish_time'] = str_replace("时间", '', $value['publish_time']);

$data[$key]['publish_time'] = date("Y-m-d H:i:s", strtotime($value['publish_time']));

}

}

//返回数据

$rdata['code'] = 1;

$rdata['msg'] = '获取数据成功';

$rdata['data'] = var_export($data, true);

$rdata['ysdata'] = encode(json_encode($data));

return $rdata;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值