熊掌开通后,提供了两种数据推送方式,分别是API提交和手动提交,其中API提交还提供了新增内容接口和历史内容接口。就是把新数据和旧数据分别开来,方便搜索引擎抓取收录。
熊掌号API主动推送
手动提交
手动提交比较简单,只要把每天产生的链接复制下来,然后粘贴到提交表单内,点击提交就可以了,新注册的熊掌号每天只能提交10条,试了下,效果不错,一般提交的数据一两天就会处理,有些还会秒收。缺点是每天要提取网站的链接,还要复制过去填写,比较麻烦。
API提交
API提交是我们今天要说的重点了,API提交比手动提交就简单多了,只要文件写好,每天发了文章后,执行一下文件就可以了,API提交的新增内容接口和历史内容接口,除了接口调用地址不一样,其他地方都是一样的,如下:
新增内容接口调用地址
http://data.zz.baidu.com/urls?appid=1602764643500857&token=XYV3Ewi6kgS6dlYb&type=realtime
历史内容接口调用地址:
http://data.zz.baidu.com/urls?appid=1602764643500857&token=XYV3Ewi6kgS6dlYb&type=batch
对比发现,只有链接后面的type的赋值不一样,其他地方都是一样的,因此我们只说一种API新增内容接口调用方法就可以了。
API提交提供了四种推送示例:curl推送、post推送、php推送、ruby推送。
四种推送方式的原理都是一样的
第一步:获取到网站链接(最好是当天的链接)
第二步:调用API接口
第三步:数据推送给百度
其中的第二步调用API接口和第三部数据推送给百度,这四种推送方式百度都提供了代码,复制就可以使用,主要是获取文章链接,每个网站的文章链接是不一样的,而且是当天的链接,因此,我们需要对推送代码进行改造,因为我的网站是用php做的 ,所以就用php推送来举例说明。
1、先复制百度提供的php推送示例代码;
2、创建一个xz.php文件,并把代码复制进去,代码如下:
$urls = array(
'http://www.example.com/1.html',
'http://www.example.com/2.html',
);
$api = 'http://data.zz.baidu.com/urls?appid=1602764643500857&token=XYV3Ewi6kgS6dlYb&type=realtime';
$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);
echo $result;
?>
3、在代码中添加数据库连接
$con=mysql_connect('localhost','root','root') or die('失败'.mysql_error());
mysql_select_db(DB_NAME,$con) or die('选择数据库失败'.mysql_error());
4、获取当天的时间戳
$year = date("Y");
$month = date("m");
$day = date("d");
$dayBegin = mktime(0,0,0,$month,$day,$year);
$dayEnd = mktime(23,59,59,$month,$day,$year);
5、根据当天时间执行sql查询
$query = "SELECT arch.id,types.typedir FROM DB_NAME as types inner join DB_NAME as arch on types.id=arch.typeid where pubdate".$dayBegin."";
6、获取url链接并放入数据
$urls="";
$dsql->Execute('arch.id,types.typedir',$query);
while($row = $dsql->GetArray('arch.id,types.typedir'))
{
$urls.="http://".$_SERVER['SERVER_NAME'].str_replace("{cmspath}","",$row['typedir'])."/".$row[id].".html".",";
}
$urls=substr($urls,0,-1);
$urls = explode(",",$urls);
到这里php文件基本就做好了,然后把做好的php文件放入网站根目录中,每天更新文章后,执行该php文件,就会返回推送结果
{
"remain_realtime": 9,
"success_realtime": 1
}
这里需要注意一下,手动提交和API提交的数据只能选择一种,如果手动提交完毕,再执行推送文件,返回结果将都是0。