使用该方法,可以实现每天自动推送网址到百度站长平台,下面博主将用PbootCMS来进行教程说明。
第一步:
在站点根目录新建一个PHP文件,例如:baidu.php,并复制下方代码添加到baidu.php文件中。
注意:两处需要修改的博主都已经在末尾添加了注释,记得修改为自己的,然后保存。
-
-
header('Content-Type:text/html;charset=utf-8');
-
// ini_set('max_execution_time',600);//脚本超时,秒为单位,自己根据需要定义
-
-
/** 多个站点只需在这里面新增数组 **/
-
$data = array(
-
array(
-
'url' => 'https://www.ceccz.com/sitemap.xml',// 这里修改你站点的xml地图链接
-
'api' => 'http://data.zz.baidu.com/urls?site=https://www.ceccz.com&token=111111111'// 这里修改为你在百度站长获取到的推送接口
-
),
-
array(
-
'url' => 'https://www.ceccz.com/sitemap2.xml',// 这里修改你站点的xml地图链接
-
'api' => 'http://data.zz.baidu.com/urls?site=https://www.ceccz.com&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/>';
-
}
-
}
-
有小伙伴留言或私信说他按教程来了但是报错:file_get_contents(): SSL operation failed with code 1
出现这种情况可以尝试关闭证书验证,既将上方第25行代码:$xmldata =file_get_contents($xml_url);替换为下方代码即可解决:
-
// 忽略SSL验证
-
$stream_opts = [
-
"ssl" => [
-
"verify_peer"=>false,
-
"verify_peer_name"=>false,
-
]
-
];
-
$xmldata =file_get_contents($xml_url, false, stream_context_create($stream_opts));




