首页>建站相关>百度api推送typecho文章

百度api推送typecho文章

对于希望能被百度所收录的站点,百度提供了多种文章提交方式。用户可以视需求选择提交sitemap,利用api提交数据,或者采用自动推送的方式。API提交和手动提交共享配额,每日至多提交10万条有价值的内容,sitemap提交配额不与其他方式共享,具体配额以站点页面显示数据为准。配额不可累计,当日有效。

关于api推送

baidu_api_push_typecho

进入百度站长平台(已改名百度搜索资源平台),选择左侧的普通收录,可以看到百度关于api推送的介绍。api推送可以通过多种方式实现,百度分别提供了curl、post、php、ruby的推送方式,因为typecho基于php,所以博主准备选用php的方式推送。

$urls = array(
    'http://www.example.com/1.html',
    'http://www.example.com/2.html',
);
$api = 'http://data.zz.baidu.com/urls?site=您的站点的专属代码';
$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;

百度提供了现成的代码,我们需要做的是考虑一次推送多少条文章地址,如何获取到这些地址并且推入数组。需要注意的是$api变量代表的提交地址,不同的域名提交地址肯定不一样。如果在站长平台里同时管理着多个站点,注意推送的时候确认改代码是否对应当前需要推送的站点,否则会引起预期外的错误。

获取需要推送的文章地址

网上有很多typecho生成sitemap.xml文件的代码,实现提取文章地址,并且按照xml文件格式的要求组装标签。因为我们仅需要一个文章地址数组,所以代码要简单的多:

$db = Typecho_Db::get();
$options = Typecho_Widget::widget('Widget_Options');
$limit = 20;
$articles = $db->fetchAll(
    $db->select()->from('table.contents')
        ->where('table.contents.status = ?', 'publish')
        ->where('table.contents.created < ?', $options->gmtTime)
        ->where('table.contents.type = ?', 'post')
        ->limit($limit)
        ->order('table.contents.created', Typecho_Db::SORT_DESC)
);
$push_urls=[];
foreach ($articles as $article) {
    $type = $article['type'];
    $routeExists = (NULL != Typecho_Router::get($type));
    $article['pathinfo'] = $routeExists ? Typecho_Router::url($type, $article) : '#';
    $article['permalink'] = Typecho_Common::url($article['pathinfo'], $options->index);
    array_push($push_urls,$article['permalink']);
}
$urls = $push_urls;

从开源代码中整理了提取文章地址的部分,其中$limit限制的提交文章的数量,仅用于测试效果,这里填写了20。

完整代码

将代码整理成一个页面模板文件,并且保存于主题根目录,新建一个文章推送页面,选择“百度推送页”模板,点击发布。访问该模板,页面会向百度推送最新的20篇文章。

<?php
/**
 * 百度推送页
 *
 * @package custom
 */
$db = Typecho_Db::get();
$options = Typecho_Widget::widget('Widget_Options');
$limit = 20;
$articles = $db->fetchAll(
    $db->select()->from('table.contents')
        ->where('table.contents.status = ?', 'publish')
        ->where('table.contents.created < ?', $options->gmtTime)
        ->where('table.contents.type = ?', 'post')
        ->limit($limit)
        ->order('table.contents.created', Typecho_Db::SORT_DESC)
);
$push_urls=[];
foreach ($articles as $article) {
    $type = $article['type'];
    $routeExists = (NULL != Typecho_Router::get($type));
    $article['pathinfo'] = $routeExists ? Typecho_Router::url($type, $article) : '#';
    $article['permalink'] = Typecho_Common::url($article['pathinfo'], $options->index);
    array_push($push_urls,$article['permalink']);
}
$urls = $push_urls;
$api = 'http://data.zz.baidu.com/urls?site=您的站点的专属代码';
$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;
?>

推送成功后,页面会打印如下信息,2980是当天的剩余配额,说明博主的站点每日配额为3000条,success显示了推送成功的数量。因为每日的配额有限,而重复刷新会不断消耗配额,如果通过页面模板的方式,该页面不适合展示在主页面上,否则可能因用户的重复访问导致站点配额的异常消耗。

{"remain":2980,"success":20}

标签: seo

移动端可扫我直达哦~

推荐阅读

seo 2023-11-08

对必应搜索批量提交网址的尝试

关于IndexNowIndexNow是一个易于使用的协议,当任何URL上的网站内容更新或被创建时,网站都可以调用该协议来通知Bing,帮助URL更快的为Bing所发现。准备工作首先你需要一个API密钥来匹配域的所有权以及提交的URL;...

建站相关 seo

seo 2023-09-15

typecho如何向神马推送MIP数据

神马站长平台是个很佛系的平台,比如你几周前提交了sitemap,几周后发现sitemap上只是多了点尘土。然而半年后偶尔站点又确实会有从神马搜索过来的屈指可数的访客,于是你又打开了神马站长平台,找回失散了半年的密码,满怀期待的点击登陆...

建站相关 seo

seo 2022-10-13

百度统计登陆不上去一直转圈

想看看自己的站点有没有人访问,就在站点上放了一段百度统计的代码。结果挺受打击的,因为站点没有什么收录,所以也没有什么访客,来访最勤的就是博主自己。虽然明知道结果,挂上统计之后还是会习惯性的登陆百度统计去看一眼。之前一直挺正常的,5月3...

建站相关 seo

seo 2022-10-12

浏览器导致必应站长平台无法登录

建站之初,很热衷于查看站点的访问量,也经常登录必应站长平台,扫描扫描博客上少的可怜的几篇博文,看看是不是有什么SEO错误。这种热度持续了有个把月吧,有一天突然发现,必应站长平台无法正常登陆,输入密码后始终停留在一个提交站点的页面,输入...

建站相关 seo

seo 2022-10-08

百度移动Sitemap协议

什么是移动Sitemap协议百度推出了移动端的Sitemap协议,用于将网址提交给移动搜索收录。百度移动Sitemap协议是在标准Sitemap协议基础上制定的,增加了一个<mobile:mobile/>标签,它有以下四种...

建站相关 seo

seo 2022-10-08

noreferrer、noopener与nofollow属性

浏览器允许html为链接添加rel属性,以解释链接所处当前文档与被指向的链接文档的关系,noreferrer、noopener、nofollow都是rel的许用属性,它们彼此不相关,每个属性都有自己的用途,让我们看看这三个“no”都是...

建站相关 seo

seo 2022-10-05

几个常用的站长平台

好不容易建立了自己的站点,如果希望能被搜索引擎尽快关注到,少不了要去几个常用的站长平台上熟悉熟悉规则,以确保自己的站点没有什么违规设置,符合几个搜索引擎的收录要求。百度依旧是目前市占率最高的搜索引擎,而360凭借着360急速浏览器的普...

建站相关 seo

seo 2022-09-29

百度自动推送工具

什么是自动推送工具?自动推送JS代码是百度搜索资源平台最新推出的轻量级链接提交组件,站长只需将自动推送的JS代码放置在站点每一个页面源代码中,当页面被访问时,页面链接会自动推送给百度,有利于新页面更快被百度发现。为了更快速的发现站点每...

建站相关 seo

seo 2022-09-29

360自动推送工具

360凭借安全浏览器以及360急速浏览器占据了很大一部分用户的桌面,得益于浏览器的普及,其捆绑的360搜索引擎,市场占有率也是节节攀升。中国互联网络信息中心CNNIC发布了第46次中国互联网络发展状况统计报告。数据显示:2018年6月...

建站相关 seo

seo 2022-09-29

robots.txt文件的格式与示例

robots.txt文件的格式robots文件往往放置于根目录下,包含一条或更多的记录,这些记录通过空行分开(以CR,CR/NL, or NL作为结束符),每一条记录的格式如下所示:<field>:<optional...

建站相关 seo

seo 2022-09-29

seo中的robots文件

robots协议是个啥robots协议是被访站点与网络爬虫间的协议,利用一个简单的txt格式文本,告知来访爬虫其被允许爬取的范围。robots协议文件是搜索引擎访问网站时优先查看的文件。当一个搜索引擎爬虫访问一个站点时,它会首先检查该...

建站相关 seo

seo 2022-09-29

百度站长平台验证站点

百度站长平台是比较早的叫法,新的名称是百度搜索资源平台,相较于必应的“站点管理员工具”这样的命名,“百度搜索资源平台”这样的命名,细想一下,弱化了站长的作用,凸显了平台的地位。希望自己的站点为百度所收录,除了被动的等待搜索机器人随机爬...

建站相关 seo