利用宝塔计划任务实现主动自动推送网站地图(sitemap)到百度站长(宝塔计划任务提取网站地图(sitemap)链接实现自动推送)

[重要通告]如您遇疑难杂症,本站支持知识付费业务,扫右边二维码加博主微信,可节省您宝贵时间哦!

最近百度收录以及索引量有时候增加,有时间减少,很不稳定,就想着如何把相关的更新记录推送给百度一下,有了想法就要开始操作;

这个操作可以实现站点为wordpress以及PbootCMS或者其他站点均可;

一、 新建一个 PHP 文件,复制下面代码,将这个PHP文件命名为,Baidu_Push.php
二、 填写网站 sitemap.xml 地址和百度的推送接口(http://data.zz.baidu.com/urls?site=你的&token=你的),没token的 百度站长资源站去获取(https://ziyuan.baidu.com)。
三、 把文件地址添加到宝塔定时任务,选择访问 URL,自定义执行时间后,保存即可。

PS:其实在下面的代码中有三种写法,大致都是一样的,看自己喜好,我比较喜欢第一种:

第一种代码写法:

<?php
header('Content-Type:text/html;charset=utf-8');

/** 只需修改这里面的两个链接 **/
$xml_url = "https://www.laoliang.net/baidu_sitemap.xml"; // 这里修改你站点的xml地图链接
$baidu_api = 'http://data.zz.baidu.com/urls?site=https://www.laoliang.net&token=2589053300';// 这里修改为你在百度站长获取到的推送接口
/***只需修改这里面的两个链接**/

$xmldata =file_get_contents($xml_url);
$xmlstring = simplexml_load_string($xmldata,'SimpleXMLElement',LIBXML_NOCDATA);
$value_array = json_decode(json_encode($xmlstring),true);
$url = [];
for ($i =0;$i < count($value_array['url']);$i++){
// echo $value_array['url'][$i]['loc']."<br/>";
$url[]= $value_array['url'][$i]['loc'];
}
//百度推送接口一次只支持推送2000条数据,所以超过2000条的话需要分组推送
$url_group = array_chunk($url,2000);
$count=count($url_group);
for($i=0;$i<$count;$i++){
$ch = curl_init();
$options = array(
CURLOPT_URL => $baidu_api,
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => implode("\n",$url_group[$i]),
CURLOPT_HTTPHEADER => array('Content-Type:text/plain'),
);
curl_setopt_array($ch, $options);
$result =curl_exec($ch);
curl_close($ch);
echo $result;
}
?>

第二种代码写法:

<?php 
$token='http://data.zz.baidu.com/urls?site=www.laoliang.net&token=xxxxx';//去百度获取
$xml_string = file_get_contents("https://www.laoliang.net/sitemap.xml");//网站xml地图
$xml_string = trim($xml_string);
$xml_object = simplexml_load_string($xml_string);
$array=[];
$i=0;
foreach ($xml_object->url as $key=>$value){
//默认一次提交100,适合用于泛目录的xml地图(因为刷新一次就随机变),普通的网站的会出现重复提交,慎用,非要用就把$i数值改成2000 百度不允许超过2000
if($i===100){
break;
}
$array['aa']= get_object_vars($value);
$url.=$array['aa']['loc']."\n";
$i++;
}
$urls=explode("\n",$url);
$ch = curl_init();
$options = array(
CURLOPT_URL => $token,
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);
echo $result;
?>

第三种代码写法:

<?php
header('Content-Type:text/html;charset=utf-8');
$xmldata =file_get_contents("你的sitemap.xml链接");
$xmlstring = simplexml_load_string($xmldata,'SimpleXMLElement',LIBXML_NOCDATA);
$value_array = json_decode(json_encode($xmlstring),true);
$url = [];
for ($i =0;$i < count($value_array['url']);$i++){
echo $value_array['url'][$i]['loc']."<br/>";
$url[]= $value_array['url'][$i]['loc'];
}
$api ='你的推送接口';
$ch = curl_init();
$options = array(
CURLOPT_URL => $api,
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => implode("\n",$url),
CURLOPT_HTTPHEADER => array('Content-Type:text/plain'),
);
curl_setopt_array($ch, $options);
$result =curl_exec($ch);
echo $result;
?>

多站点版-注意:需要修改的区域都已经添加了注释,多个站点只需参考示例的两个数组进行增加,然后保存即可。

<?php
header('Content-Type:text/html;charset=utf-8');
// ini_set('max_execution_time',600);//脚本超时,秒为单位,自己根据需要定义

/** 多个站点只需在这里面新增数组 **/
$data = array(
array(
'url' => 'https://www.laoliang.net/sitemap.xml',// 这里修改你站点的xml地图链接
'api' => 'http://data.zz.baidu.com/urls?site=https://www.laoliang.net&token=111111111'// 这里修改为你在百度站长获取到的推送接口
),
array(
'url' => 'https://www.laoliang.net/sitemap2.xml',// 这里修改你站点的xml地图链接
'api' => 'http://data.zz.baidu.com/urls?site=https://www.laoliang.net&token=222222222'// 这里修改为你在百度站长获取到的推送接口
),
);
/** 多个站点只需在这里面新增数组 **/

foreach($data as $value){
echo '================================<br/>';
echo $value['url'].'<br/>';
post_Baidu($value['url'],$value['api']);
}

function post_Baidu($xml_url, $baidu_api) {
$xmldata =file_get_contents($xml_url);
$xmlstring = simplexml_load_string($xmldata,'SimpleXMLElement',LIBXML_NOCDATA);
$value_array = json_decode(json_encode($xmlstring),true);
$url = [];
for ($i =0;$i < count($value_array['url']);$i++){
// echo $value_array['url'][$i]['loc']."<br/>";
$url[]= $value_array['url'][$i]['loc'];
}
//百度推送接口一次只支持推送2000条数据,所以超过2000条的话需要分组推送
$url_group = array_chunk($url,2000);
$count=count($url_group);
for($i=0;$i<$count;$i++){
$ch = curl_init();
$options = array(
CURLOPT_URL => $baidu_api,
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => implode("\n",$url_group[$i]),
CURLOPT_HTTPHEADER => array('Content-Type:text/plain'),
);
curl_setopt_array($ch, $options);
$result =curl_exec($ch);
curl_close($ch);
echo $result.'<br/>';
}
}
?>

不管上面几种写法,但需要推送给百度;推送百度也有两种方式:

第一种:宝塔计划任务--添加计划任务---访问URL

最主要的就是url地址,别写错了即可,如下图我的所示;

第二种:宝塔新建计划任务---任务类型----shell脚本

脚本内容:php /www/你的网站目录/Baidu_Push.php

比如老梁的“php /www/www.laoliang.net/Baidu_Push.php”

搞好以后,直接点一下执行,测试一下,成功的如下:

{"remain": 今日剩余数,"success": 推送成功数}

问题未解决?付费解决问题加Q或微信 2589053300 (即Q号又微信号)右上方扫一扫可加博主微信

所写所说,是心之所感,思之所悟,行之所得;文当无敷衍,落笔求简洁。 以所舍,求所获;有所依,方所成!

支付宝赞助
微信赞助

免责声明,若由于商用引起版权纠纷,一切责任均由使用者承担。

您必须遵守我们的协议,如您下载该资源,行为将被视为对《免责声明》全部内容的认可->联系老梁投诉资源
LaoLiang.Net部分资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。 敬请谅解! 侵权删帖/违法举报/投稿等事物联系邮箱:service@laoliang.net
意在交流学习,欢迎赞赏评论,如有谬误,请联系指正;转载请注明出处: » 利用宝塔计划任务实现主动自动推送网站地图(sitemap)到百度站长(宝塔计划任务提取网站地图(sitemap)链接实现自动推送)

发表回复

本站承接,网站推广(SEM,SEO);软件安装与调试;服务器或网络推荐及配置;APP开发与维护;网站开发修改及维护; 各财务软件安装调试及注册服务(金蝶,用友,管家婆,速达,星宇等);同时也有客户管理系统,人力资源,超市POS,医药管理等;

立即查看 了解详情