利用ping服务接口API加快网站收录

转载自:http://www.js8.in/644.html

谷歌博客推出了ping 服务已经很长时间了,如果我们的博客是wordpress 可以很方便的设置ping服务,但是如果我们的博客不是wordpress ,或者我们的网站程序是自己手写的,那么就要自己写RPC 代码了。今天断桥残雪分享一下自己写的PHP的XML-RPC代码。在此之前先说说ping服务的好处以及wordpress 的ping设置。

配置ping服务,加快收录速度

谷歌的ping服务是一种快速收录的方法,打个比方就是:我们写了一篇文章想要谷歌收录,我们就可以使用ping服务来通知下谷歌,要googlebot尽快来抓取收录。谷歌官方的解释:

通过 Google“博客搜索”Ping API, 用户可以程序化的方式将博客内容的更新通知给 Google“博客搜索”引擎。这对于经常更新博客内容的用户尤其有用。博客服务提供商的管理人员也可以利用此API将其平台上的博客内容变化向 Google 通告,以便 Google“博客搜索”及时抓取来自这一服务提供商的最新内容。为设置对 Google“博客搜索”的自动 Ping 机制,请按照如下所述设置XML-RPC 客户端或REST客户端以发送请求。您可以任选一种方法进行通知;两者都将按照相同的方式进行处理。

wordpress设置ping的方法

wordpress自身就带着ping服务,只要我们配置一下就可以了,步骤是:设置→撰写→更新服务。常用的ping服务有以下几个:

http://rpc.pingomatic.com/
http://ping.baidu.com/ping/RPC2(百度的)
http://blogsearch.google.com/ping/RPC2(谷歌的)
http://api.my.yahoo.com/RPC2(雅虎的)
http://api.my.yahoo.com/rss/ping(雅虎的)
http://www.feedsky.com/api/RPC2(feedsky的)

谷歌ping服务的PHP代码

关于RPC的详细介绍可以移步维基百科 ,谷歌ping服务的标准:

RPC端点: http://blogsearch.google.com/ping/RPC2
调用方法名: weblogUpdates.extendedPing
参数: (应按照如下所列的相同顺序传送)

  • 站点名
  • 站点URL
  • 需要检查更新的页面URL
  • 相应的RSS、RDF或Atom种子的URL
  • 可选:页面内容的分类名称(或标签)。您可以指定多个值,之间用’|'字符进行分隔。
  • 首先要写一个CURL的函数,来POST谷歌的RPC端点:

    function postUrl($url, $postvar) { $ch = curl_init(); $headers = array( "POST ".$url." HTTP/1.0", "Content-type: text/xml;charset=/"utf-8/"", "Accept: text/xml", "Content-length: ".strlen($postvar) ); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_POSTFIELDS, $postvar); $res = curl_exec ($ch); curl_close ($ch); return $res; }

    上面的代码不多做解释,关于PHP的详细curl功能,请参考《cURL常用的几个PHP函数 》。

    主要的curl写好了之后,剩下就是要根据谷歌的XML-RPC标准组装发送的数据了,详细的请求例子可以点这里 。

    例如我的代码是这样写的:

    $googleXML = <<<END <?xml version="1.0"?> <methodCall> <methodName>weblogUpdates.extendedPing</methodName> <params> <param> <value>断桥残雪部落格</value> </param> <param> <value>http://www.js8.in</value> </param> <param> <value>http://www.js8.in/379.html</value> </param> <param> <value>http://www.js8.in/rss.xml</value> </param> </params> </methodCall> END; $res = postUrl('http://blogsearch.google.com/ping/RPC2', $googleXML);

    下面是返回成功与否的判断(根据谷歌ping的接口说明)

    if (strpos($res, "<boolean>0</boolean>")) { echo "PING成功"; } else { echo "PING失败"; }

    其实国内的搜索引擎百度 也有类似的服务,今天就介绍下百度博客ping服务,百度博客Ping服务的详细介绍 ,请移步:http://www.baidu.com/search/blogsearch_help.html#n7 。百度的ping服务 也是基于XML-RPC标准协议,但是与谷歌ping服务不同的是百度的ping发送的xml格式不同,我们需要使用string节点包裹内容。

    <?xml version="1.0" encoding="UTF-8"?> <methodCall> <methodName>weblogUpdates.extendedPing</methodName> <params> <param> <value><string>断桥残雪部落格</string></value> </param> <param> <value><string>http://www.js8.in/</string></value> </param> <param> <value><string>http://www.js8.in/644.html</string></value> </param> <param> <value><string>http://www.js8.in/feed</string></value> </param> </params> </methodCall>

    根据谷歌接口,我们只要改变一下提交的xml内容即可,当然百度ping服务返回的判断也是跟谷歌的不同,也可以做相应的修改,

    下面是php的代码:

    $baiduXML = <<<EOT <?xml version="1.0" encoding="UTF-8"?> <methodCall> <methodName>weblogUpdates.extendedPing</methodName> <params> <param><value><string>断桥残雪部落格</string></value></param> <param><value><string>http://www.js8.in</string></value></param> <param><value><string>http://www.js8.in/644.html</string></value></param> <param><value><string>http://www.js8.in/feed</string></value></param> </params> </methodCall> EOT; $res = postUrl('http://ping.baidu.com/ping/RPC2', $baiduXML);

    下面是返回成功与否的判断(根据百度ping的接口说明)

    if (strpos($res, "<int>0</int>")) echo "PING成功"; else echo "PING失败";

     

     

    你可能感兴趣的:(利用ping服务接口API加快网站收录)