您的位置:首页 > 运维架构 > 网站架构

百度推送网站url到搜索引擎方式 : 主动推送&sitemap

2016-07-11 17:10 351 查看
URL提交方式:

主动推送:最为快速的提交方式,建议您将站点当天新产出链接立即通过此方式推送给百度,以保证新链接可以及时被百度
收录。或每产生一个url(如新添一篇文章)就推送一次。

sitemap:您可以定期将网站链接放到Sitemap中,然后将Sitemap提交给百度。百度会周期性的抓取检查您提交
的Sitemap,对其中的链接进行处理,但收录速度慢于主动推送。(也可以写脚本主动将xml文件推送到百度)

手工提交:如果您不想通过程序提交,那么可以采用此种方式,手动将链接提交给百度。(在百度站长平台中手动提交)

自动提交:将自动提交js脚本嵌入到网站页面中,每打开一个页面就将该页提交到百度


如何使用主动推送功能:

1、需要网站制作数据推送接口,进入主动推送工具后,会看到接口调用地址的token,token是由16个英文数字组合的字符

串。百度站长平台网址:http://zhanzhang.baidu.com/dashboard/index

接口调用地址:

http://data.zz.baidu.com/urls?site=www.360hudong.com&token=RoKT4gj0XIDdn5AQ&type=original



2、下面提供一些推送示例

1)curl推送示例

将要提交的url数据写入一个本地文件,比如urls.txt,每个url占一行,然后调用curl命令:

curl -H 'Content-Type:text/plain' --data-binary @urls.txt "http://data.zz.baidu.com/urls?site=www.example.com&token=edk7yc4rEZP9pDQD"


3)php推送示例

$urls = array(
'http://www.example.com/1.html',
'http://www.example.com/2.html',
);
$api = 'http://data.zz.baidu.com/urls?site=www.58.com&token=edk7ychrEZP9pDQD';
$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;


4) 推送反馈:





主动推送注意事项:

1, 和原来的sitemap提交接口有什么区别?

答:状态反馈更及时了,原来提交后需要登录到站长平台查看提交是否成功。目前只要根据提交后返回的数据就可以判断了。

2, 已经存在的提交sitemap数据的程序代码需要做什么修改?

答:主要修改两点。第一点,提交的接口需要修改;第二点,需要处理下接口返回的信息,失败后需要根据错误进行相应处理,报错的链接是无法提交成功的

3,为什么提交成功后看不到数据变化?

答:我们反馈的是新提交链接的数量,如果您提交的链接在之前提交过(即重复提交)是不会被统计到的

4,在什么时机使用主动推送提交功能效果最明显?

答:页面链接产生或发布时立即提交,这样效果是最好的

5,每次提交一条数据和多条数据有什么区别?

答:没有区别

6,重复提交已经发布的链接会有什么问题?

答:会有两个影响。第一,将浪费您提交的配额,每个站点每天可提交的数量是有限制的,如果您都提交了旧链接,当有新链接时可能因为配额耗尽无法提交。第二,如果您经常重复提交旧链接,我们会下调您的配额,您可能会失去主动推送功能的权限

7,主动推送可以推多少条链接?

答:主动推送可提交的链接数量上限是根据您提交的新产生有价值链接数量而决定的,百度会根据您提交数量的情况不定期对上限额进行调整,提交的新产生有价值链接数量越多,可提交链接的上限越高。

Sitemap 推送说明:

Sitemap(即站点地图)就是您网站上各网页的列表。您还可以使用Sitemap提供有关您网站的其他信息,如上次更新日期、Sitemap文件的更新频率等,供百度Spider参考。

百度Sitemap协议支持三种格式:

文本格式、xml格式、Sitemap索引格式

一般用xml格式

xml格式Sitemap:

单个xml数据格式如下:

<?xml version="1.0" encoding="utf-8"?>
<!-- XML文件需以utf-8编码-->
<urlset>
<!--必填标签-->
<url>
<!--必填标签,这是具体某一个链接的定义入口,每一条数据都要用<url>和</url>包含在里面,这是必须的 -->
<loc>http://www.yoursite.com/yoursite.html</loc>
<!--必填,URL链接地址,长度不得超过256字节-->
<lastmod>2009-12-14</lastmod>
<!--可以不提交该标签,用来指定该链接的最后更新时间-->
<changefreq>daily</changefreq>
<!--可以不提交该标签,用这个标签告诉此链接可能会出现的更新频率 -->
<priority>0.8</priority>
<!--可以不提交该标签,用来指定此链接相对于其他链接的优先权比值,此值定于0.0-1.0之间-->
</url>
<url>
<loc>http://www.yoursite.com/yoursite2.html</loc>
<lastmod>2010-05-01</lastmod>
<changefreq>daily</changefreq>
<priority>0.8</priority>
</url>
</urlset>


若有多条url,按照上述格式重复之间的片断,列明所有url地址,打包到一个xml文件,向站长平台进行提交。

<changefreq>Weekly</changefreq>
注释:这里写的就是这个网址的内容大概的更新频率是怎样的。它的值可以是:Always(总是)、Hourly(每小时)、Daily(每天)、Weekly(每个星期)、Monthly(每个月)、Yearly(每年)。


Sitemap索引格式:

如需提交大量sitemap文件,则可将其列在sitemap索引文件中,然后将该索引文件提交。您无需分别提交每个文件。

<?xml version="1.0" encoding="utf-8"?>
<!-- XML文件需以utf-8编码-->
<sitemapindex>
<!--必填,以 <sitemapindex> 开始标记作为开始,以 </sitemapindex> 结束标记作为结束-->
<sitemap>
<!--必填,以<sitemap>标签提交一个子sitemap文件-->
<loc>http://example.com/ext/xmlsitemap/add/201201/index_20120106.xml</loc>

<!--必填,识别sitemap的位置-->
<lastmod>2009-12-14</lastmod>
<!--选填,识别相对sitemap文件的修改时间-->
</sitemap>
<!--必填,标签闭合-->
<sitemap>
<loc>http://m.cheyun.com/wap_jishu_zhengche_3.xml</loc>
<lastmod>2016-07-10</lastmod>
</sitemap>
</sitemapindex>
<!--必填,标签闭合-->


创建Sitemap的注意事项:

第一,一个Sitemap文件包含的网址不得超过 5 万个,且文件大小不得超过 10 MB。如果您的Sitemap超过了这些限值,请将其拆分为几个小的Sitemap。这些限制条件有助于确保您的网络服务器不会因提供大文件而超载。

第二,一个站点支持提交的sitemap文件个数必须小于5万个,多于5万个后会不再处理,并显示“链接数超”的提示。

第三,如果验证了网站的主域,那么Sitemap文件中可包含该网站主域下的所有网址。

第四,强烈建议将 Sitemap 放在 HTML 服务器的根目录中,即 http://example.com/sitemap.xml。Sitemap 列出的所有网址必须和 Sitemap 位于同一个主机上。

第五,对本协议中的 lastmod 时间戳以及所有其他日期和时间,请使用 W3C Datetime 编码。例如,2004-09-22T14:12:14+00:00。此编码允许您省略 ISO8601 格式的时间部分,例如,2004-09-22 也是有效的。然而,如果您的网站频繁更改,则建议您使用ISO8601格式的时间部分,以便抓取工具可获取关于您网站的更全面的信息。

第六,在网址中包含会话 ID 号可能会导致网站抓取不完整以及重复抓取,要将其删除。

Sitemap 推送说明:

第一步,将需提交的网页列表制作成一个Sitemap文件,文件格式请阅读百度Sitemap协议都支持哪些格式。

第二步,将Sitemap文件放置在网站目录下。比如您的网站为example.com,您已制作了一个sitemap_example.xml的Sitemap文件,将sitemap_example.xml上传至网站根目录即example.com/sitemap_example.xml

第三步,登录百度站长平台,确保提交Sitemap数据的网站已验证归属。

第四步,进入Sitemap工具,点击“添加新数据”,文件类型选择“URL列表”,填写抓取周期和Sitemap文件地址

最后,提交完之后,可在Sitemap列表里看到提交的Sitemap文件,如果Sitemap文件里面有新的网站链接,可以选择文件后,点击更新所选,即对更新的网站链接进行了提交。

主动推送Sitemap :

php实例:

<?php
set_time_limit(0);

//获取所有  xml 文件
$dir = './sitemap';
$files = array();
if ( $handle = opendir($dir) ) {
while ( ($file = readdir($handle)) !== false ) {
if ( $file != ".." && $file != "." ) {
$files[] = $dir . '/' . $file;
}
}
closedir($handle);
}
$error = '';
$curl= curl_init();
//遍历读取所有xml文件
foreach ($files as $fileName) {
$data = file_get_contents($fileName);
$pingurl="http://ping.baidu.com/sitemap?site=www.360hudong.com&resource_name=sitemap&access_token=RoKT4gj0XIDdn5AQ";//你的接口地址
curl_setopt($curl, CURLOPT_URL,$pingurl);// 要访问的地址
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);// 对认证证书来源的检查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);// 从证书中检查SSL加密算法是否存在
curl_setopt($curl, CURLOPT_USERAGENT,"curl/7.12.1");// 模拟用户使用的浏览器
curl_setopt($curl, CURLOPT_COOKIE,'');
curl_setopt($curl, CURLOPT_REFERER,"");
curl_setopt($curl, CURLOPT_POST, 1);// 发送一个常规的Post请求
curl_setopt($curl, CURLOPT_POSTFIELDS,$data);// Post提交的数据包
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Expect:')); //xml文件可超过1024字节
curl_setopt($curl, CURLOPT_TIMEOUT, 30);// 设置超时限制防止死循环
curl_setopt($curl, CURLOPT_HEADER, 0);// 显示返回的Header区域内容
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);// 获取的信息以文件流的形式返回
$tmpInfo= curl_exec($curl);// 执行操作
if(curl_errno($curl)) {
$error .= curl_error($curl) . "\n";
}
$xml = simplexml_load_string($tmpInfo);
$errno = $xml->params->param->value->int;
if(200 < $errno) {
$error .= $fileName . '文件推送错误,错误码: ' . $errno . "\n";
}
}
curl_close($curl);
if(!empty($error)) {

$err = "
错误代码                                    错误码说明:    \n
200    无使用方式错误,需要进一步观察返回的内容是否正确     \n
400    必选参数未提供      \n
405    不支持的请求方式,我们只支持POST方式提交数据     \n
411    HTTP头中缺少Content-Length字段     \n
413    推送的数据过大,超过了10MB的限制       \n
422    HTTP头中Content-Length声明的长度和实际发送的数据长度不一致       \n
500    站长平台服务器内部错误      \n
";
$error .= $err;
error_log($error, 3, 'error.log');
}


Sitemap推送反馈:

数据推送后,服务器会返回xml反馈推送是否成功,反馈示例:

<?xml version="1.0" encoding="UTF-8"?>

<methodResponse>

<params>

<param>

<value>

<int>200</int>

</value>

<param>

</params>

</methodResponse>


移动Sitemap协议:

百度移动Sitemap协议是在标准Sitemap协议基础上制定的,增加了标签,它有四种取值:

<mobile:mobile/> :移动网页
<mobile:mobile type="mobile"/> :移动网页
<mobile:mobile type="pc,mobile"/>:自适应网页
<mobile:mobile type="htmladapt"/>:代码适配


无该上述标签表示为PC网页

下方样例相当于向百度移动搜索提交了一个移动网页:http://m.example.com/index.html,向PC搜索提交了一个传统网页:http://www.example.com/index.html,同时向移动搜索和PC搜索提交了一个自适配网页http://www.example.com/autoadapt.html

<?xml version="1.0" encoding="UTF-8" ?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:mobile="http://www.baidu.com/schemas/sitemap-mobile/1/">
<url>
<loc>http://m.example.com/index.html</loc>
<mobile:mobile type="mobile"/>
<lastmod>2009-12-14</lastmod>
<changefreq>daily</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>http://www.example.com/index.html</loc>
<lastmod>2009-12-14</lastmod>
<changefreq>daily</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>http://www.example.com/autoadapt.html</loc>
<mobile:mobile type="pc,mobile"/>
<lastmod>2009-12-14</lastmod>
<changefreq>daily</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>http://www.example.com/htmladapt.html</loc>
<mobile:mobile type="htmladapt"/>
<lastmod>2009-12-14</lastmod>
<changefreq>daily</changefreq>
<priority>0.8</priority>
</url>
</urlset>


注意:

Sitemap数据提交后,一般在1小时内百度会开始处理。

Sitemap中提交的url因为转码问题建议最好不要包含中文。

js自动推送说明:

站长需要在每个页面的HTML代码中包含以下自动推送JS代码:

<script>

(function(){

var bp = document.createElement('script');

var curProtocol = window.location.protocol.split(':')[0];

if (curProtocol === 'https'){

bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';

} else{

bp.src = 'http://push.zhanzhang.baidu.com/push.js';

}

var s = document.getElementsByTagName("script")[0];

s.parentNode.insertBefore(bp, s);

})();

</script>


如果站长使用PHP语言开发的网站,可以按以下步骤操作:

1、创建名为“baidu_js_push.php”的文件,文件内容是上述自动推送JS代码;

2、在每个PHP模板页文件中的 标记后面添加一行代码:

<?php include_once("baidu_js_push.php") ?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  url 搜索引擎 百度