某淘宝客源码的百度api推送php代码

技术教程 3个月前 亦森
68,450 1

最近朋友说打算找点文章采集,来丰满下网站内容(一个淘宝客优惠券网站);

于是让我帮忙写个采集规则,写完之后又让我顺便写个发布规则,我当时是拒绝的;

直到他亮出了华子 我转念一想反正也不是什么难事,况且我俩关系这么铁不可能不帮忙呀;

某淘宝客源码的百度api推送php代码

推券客的数据库结构并不算很负杂,没过五分钟就搞定了哈哈;

某淘宝客源码的百度api推送php代码

写完之后给他发过去,他就问我百度推送的问题,唉吃人嘴短拿人手短~~~

api推送逻辑:
火车头采集发布到数据库(自身带有剔除重复的功能);
php请求到state为0 的数据代表没有推送,通过for循环 将链接逐个推送到百度;
根据返回结果决定是否执行sql更改数据库中状态

于是我一个下午就花在了这上边(php不是很熟练,不过凭借跟度娘的深度合作关系,一些简单的问题还是能解决的);

首先就想到数据库建表,因为重复推送是没有意义的而且api推送还限额;

于是就新建了一个表来储存推送历史;

剩下的都写在代码注释里了,大家自己看:

<?php
/*
*作者:小森
*用途:推券客程序的百度API推送实现
*环境:基于mysql数据库和火车头采集器 搭配php
*base:https://008ts.cn/ 更多源码教程
*/
$config =array(
'host'=>'localhost',
'user'=>'quan618',
'password'=>'***********',
'dbname'=>'******'
);

$con=mysqli_connect($config['host'],$config['user'],$config['password'],$config['dbname']); //创建一个mysqli数据库链接
if (mysqli_connect_errno($con)) //判断链接状态
{
echo "连接 MySQL 失败: " . mysqli_connect_error().'请检查文件中的四个数据库参数是否正确!';
}

//开始检测是否存在表tqk_push_url
$SELECT = mysqli_query($con,'SELECT * FROM `tqk_push_url` WHERE 1');//查询表
$sql_create = 'CREATE TABLE `quan618`.`tqk_push_url` (`url` VARCHAR(80) NOT NULL ,`state` INT(1) NOT NULL) ENGINE = InnoDB';//创建新表
$err_sql = "Table 'quan618.tqk_push_url' doesn't exist";
if(mysqli_error($con) == $err_sql){//若不存在就创建新表
echo mysqli_error($con).'</br></br>';
mysqli_multi_query($con,$sql_create);
}
// 执行查询
$sql1 = 'SELECT url FROM `tqk_push_url` WHERE state = 0'; //定义一个sql来取出 未推送的url字段数据
$rs = mysqli_query($con,$sql1); //执行单个请求,参数一 数据库链接 参数二 单条sql命令
echo "未提交的行数:" . mysqli_affected_rows($con)."</br></br>";//执行结果参考
if(mysqli_affected_rows($con) == 0){ echo '无待提交链接请检查!'; exit;} //若没有符合条件的数据,停止php脚本执行
$urlarr = mysqli_fetch_all($rs); //取出所有sql请求到的数据,返回的是数组格式
for ($i = 0; $i < mysqli_affected_rows($con); $i++) {
// code...
$urls = array($urlarr[$i][0]); //从数组中找到的url字段的字符串
$api = 'http://data.zz.baidu.com/urls?site=https://*.cn&token=********'; //百度站长平台的API提交接口
$ch = curl_init();
$options = array(
CURLOPT_URL => $api,
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => implode("\n", $urls),
CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),
);
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
//以上为baiduAPI推送的格式代码
$e =json_decode($result,true); // 将返回的 推送结果 转为数组格式 并将成功数量赋值给变量e
//(第二个参数代表转换为php数组 填false或不填 则会转换成phpObject对象)
//echo($result.'</br>');
if($e['success'] && $e['success'] == 1){ //通过判断推送是否成功来决定是否更改数据库state字段数值 来记录推送状态
//这里只记录是否推送成功 至于是否收录和推送不成功的原因不做记录
$sql2 .= 'UPDATE tqk_push_url SET state = 1 WHERE url = \''.$urlarr[$i][0].'\' AND state = 0;';//将状态为0的改为1

}else {
// code...
echo '链接'.$urlarr[$i][0].'推送失败,原因:'.$e['message'].'</br></br>';

}

} //for 循环结束
if($sql2){echo $sql2.'</br>';} //查看执行过的同步状态命令
mysqli_multi_query($con,$sql2); //推送结果 批量 同步到数据库state
mysqli_close($con);//关闭数据库链接//
?>

搭配上火车头采集的去重功能,能完美实现采集完推送到百度。

某淘宝客源码的百度api推送php代码

测试的时候踩了几个坑,不小心把限额用完了,不用担心明天会恢复的。。。

 

重新调整了一下;

主要是 数据库链接前的安全校验, 链接后对数据库并发上的优化,界面布局 增加了 星空背景,比较标特否一些啦

某淘宝客源码的百度api推送php代码
版权声明:亦森 发表于 2021-05-04 15:33:03。
转载请注明:某淘宝客源码的百度api推送php代码 | 亦森博客

1 条评论