采集神器,优采云的手动抓取策略和入库操作!

优采云 发布时间: 2020-08-09 08:12

  #程序员工资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>

  采集一些好多防爬虫的网站,有个挺好用的工具:优采云...直接通过浏览器形式访问,一力破万法.

  准备工作:money,花钱去优采云官网买一个月或则更长时间的会员,这样你能够搞云采集

  下面,自己去抓取数据,抓取完成后,设置定时云采集

  然后你点击云采集,查看数据,就会有很多数据了,,下面是,如何把这种数据搞到本地,然后定时清空

  上代码:

  直接通过get_group_list获取你的分组id,然后把你须要的分组id,拿到下边get_task_list中去运行,获取所有任务列表,这样你就可以循环任务列表,获取上面的数据,运行完成后,执行api的清空操作,就完事儿了

  

class NewsData extends Frontend{

//备注

//八爪鱼接口文档

//https://dataapi.bazhuayu.com/help#_ref_status_code

public function ins_list()

{

$task_list=$this->get_task_list();

if($task_list==false){

echo "任务列表为空";

die();

}

$NewsSource=new NewsSource();

foreach ($task_list as $k=>$v){

$task_id=$v['taskId'];//任务id

//根据任务ID调用任务相关的数据详情

echo "任务{$v['taskName']}:{$task_id}开始: ";

sleep(1);

//循环获取数据

$data=$this->get_task_data($task_id);

$ins=[];

if(empty($data)){

echo "数据为空:跳过! ";

continue;

}

//循环插入数据

foreach ($data as $k2=>$item){

$ins=[

"cate_name"=>"新闻",

"search_name"=>$item['搜索关键词'],

"title"=>$item['最新文章标题'],

"keywords"=>"",

"description"=>"",

"thumb"=>"",

"content"=>'',

"create_time_text"=>$item['时间'],

"status"=>"1",

"oldurl"=>$item['最新文章链接'],

"author"=>$item['公众号名称'],

"author_avatar"=>$item['公总号头像'],

"author_wechat"=>$item['公众号微信号'],

];

if(strlen($item['内容'])gz_str($item['内容']);

//查询是否重复

$has_id=Db::name("news_source")->where(["title"=>$ins['title']])->value("id");

if(intval($has_id)!==0){

echo "重复ID:{$has_id},标题:{$ins['title']}--标题重复,跳过! ";

continue;

}

//插入一条数据

$ins_id=Db::name("news_source")->insertGetId($ins);

echo "成功插入一条id:{$ins_id} ";

unset($ins);

}

unset($data);

//清空任务数据

$this->remove_task_data($task_id);

}

echo "执行结束!";

die();

}

public $url="https://dataapi.bazhuayu.com";

//获取token值

public function get_token(){

$token_name="bazhuayu_token";

$token_data=Cache::get($token_name);

//如果数据为空 或者 数据过期时间"xxxx..",

"grant_type"=>"password",

];

$params=http_build_query($params);

$token_json=$this->sendPost($url,$params);

$token_data=json_decode($token_json,true);

if(!isset($token_data['expires_in'])){

echo $token_json;

return false;

}

$token_data['expires_time']=$token_data['expires_in']+time();

Cache::set($token_name,$token_data,$token_data['expires_in']);

return $token_data;

}

if(!empty($token_data)){

return $token_data;

}else{

return false;

}

}

//获取header 封装token到header中

public function get_header(){

$token_data=$this->get_token();

if($token_data==false){

echo "token错误!";

die();

}else{

$header=[

"Authorization:".$token_data['token_type'].' '.$token_data["access_token"],

];

return $header;

}

}

//获取任务组 列表

public function get_group_list(){

$url="https://dataapi.bazhuayu.com/api/TaskGroup";

$header=$this->get_header();

$list=$this->sendGet($url,$header);

$list=json_decode($list,true);

var_dump($list);

}

//获取任务详情 列表

public function get_task_list(){

$group_id=2206006;//定义任务组id

$url=$this->url."/api/Task?taskGroupId=".$group_id;

$header=$this->get_header();

$list=$this->sendGet($url,$header);

$list=json_decode($list,true);

$list=isset($list['data'])?$list['data']:false;

return $list;

}

//获取任务的数据

public function get_task_data($task_id=null)

{

//$task_id="0385e312-b674-4793-9435-xxxx";

$offset=0;

$size=200;

//$url=$this->url."/api/alldata/GetDataOfTaskByOffset?taskId={$task_id}&offset={$offset}&size={$size}";

$url=$this->url."/api/notexportdata/gettop?taskId={$task_id}&size={$size}";

$header=$this->get_header();

$data=$this->sendGet($url,$header);

$data=json_decode($data,true);

if(isset($data['data']['dataList'])&&!empty($data['data']['dataList'])){

return $data['data']['dataList'];

}else{

return false;

}

}

//清空任务的数据

public function remove_task_data($task_id=null)

{

//$task_id="02be503d-4568-430b-9f15-c3511ad8e98b";

$url=$this->url."/api/task/RemoveDataByTaskId?taskId=".$task_id;

$header=$this->get_header();

$json=$this->sendPOst($url,null,$header);

var_dump($json);

echo "任务ID{$task_id}数据销毁完成!";

}

/**

* 发起请求

* @param string $url 请求地址

* @param string $data 请求数据包

* @return string 请求返回数据

*/

public function sendPost($url,$data,$header=null)

{

$curl = curl_init(); // 启动一个CURL会话

curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对*敏*感*词*来源的检测

curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); // 从证书中检查SSL加密算法是否存在

if(!empty($header)){

curl_setopt($curl, CURLOPT_HTTPHEADER, $header);

curl_setopt($curl, CURLOPT_HEADER, 0);//返回response头部信息

}

curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转

curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer

curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求

curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包

curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回

$return_data = curl_exec($curl); // 执行操作

if (curl_errno($curl)) {

echo 'Errno'.curl_error($curl);

}

curl_close($curl); // 关键CURL会话

return $return_data; // 返回数据

}

public function sendGet($url,$header=null)

{

$curl = curl_init(); // 启动一个CURL会话

curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对*敏*感*词*来源的检测

curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); // 从证书中检查SSL加密算法是否存在

curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转

curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer

if(!empty($header)){

curl_setopt($curl, CURLOPT_HTTPHEADER, $header);

curl_setopt($curl, CURLOPT_HEADER, 0);//返回response头部信息

}

curl_setopt($curl, CURLOPT_TIMEOUT, 20); // 设置超时限制防止死循

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回

$return_data = curl_exec($curl); // 执行操作

if (curl_errno($curl)) {

echo 'Errno'.curl_error($curl);

}

curl_close($curl); // 关键CURL会话

return $return_data; // 返回数据

}

}

  城市合伙人全球招募中:

  参与线下宏伟新蓝图,用业绩说话!

  软件线索、软件需求,米鼠网帮你变现!

  更灵活的合作模式(不限地域、不限金额、不限项目)

  更高额的提成比列(提成是软件项目收益的80%)

  利润的核算方法:

  以平台公开招标的最低价中标价钱为基准,剩下的为收益部份,如对平台的最低中标价钱有异议,可以推荐供应商进行竞标。

  义务:

  1、作为城市合伙人,在该城市借助自身优势推广“米鼠网平台”,拓展乙 方所拥有的“米鼠网平台”实名认证用户和 VIP 用户

  2、作为城市合伙人,在该城市借助自身优势推广“米鼠网商城”,并寻求该地域软件产品销售商,促成软件产品销售商委托乙方在“米鼠网商城”上代理销售软件产品销售商的软件产品的交易,并拓展软件产品采购用户促使与乙方的采购交易。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线