博客更新以后需要通知搜索引擎来进行抓取,使用Ping服务能够在几十分钟内就把新的博客内容发布到搜索引擎上。PING的API接口基本都是一样的,这里给出一段用PHP编写的PING Google“博客搜索”的例子代码。      

function googleping_send ($blogname, $webaddress, $urladdress, $rssaddress, $categoryname) {
	$url="http://blogsearch.google.com/ping/RPC2";
	$trackback_url=parse_url($url);
	$out="POST {$trackback_url['path']}".($trackback_url['query'] ? '?'.$trackback_url['query'] : '')." HTTP/1.0rn";
	$out.="Host: {$trackback_url['host']}rn";
	$out.="Content-Type: text/xml; charset=utf-8rn";

	$query_string="<?xml version="1.0"?>rn<methodCall>rn<methodName>weblogUpdates.extendedPing</methodName>rn<params>rn<param>rn<value>{$blogname}</value>rn</param>rn<param>rn<value>{$webaddress}</value>rn</param>rn<param>rn<value>{$urladdress}</value>rn</param>rn<param>rn<value>{$rssaddress}</value>rn</param>rn<param>rn<value>{$categoryname}</value>rn</param>rn</params>rn</methodCall>";

	$out.='Content-Length: '.strlen($query_string)."rn";
	$out.="User-Agent: Bo-Blogrnrn";
	$out.=$query_string;
	if ($trackback_url['port']=='') $trackback_url['port']=80;
	$fs=fsockopen($trackback_url['host'], $trackback_url['port'], $errno, $errstr, 10);
	if (!$fs) return false;
	fputs($fs, $out);
	$http_response = '';
	while(!feof($fs)) {
		$http_response .= fgets($fs, 128);
	}
	@fclose($fs);
	return true;
}

    

下面摘录Google“博客搜索”Ping API的说明。      

设置对 Google“博客搜索”的自动 Ping 机制,有XML-RPC客户端和REST客户端两种方法。您可以任选一种方法进行通知;两者都将按照相同的方式进行处理。       

设置XML-RPC客户

    

XML-RPC客户的请求应包含如下元素:      

RPC端点: http://blogsearch.google.com/ping/RPC2   

    

调用方法名: weblogUpdates.extendedPing  

    

参数: (应按照如下所列的相同顺序传送)   

   

 
 

  • 站点名
  • 站点URL
  • 需要检查更新的页面URL
  • 相应的RSS、RDF或Atom种子的URL
  • 可选 页面内容的分类名称(或标签)。您可以指定多个值,之间用’|’字符进行分隔。

    

XML-RPC响应中将返回含有两个元素的<struct> :       

  • flerror (Boolean):当有错误发生时设为true/1
  • message (string) :”Thanks for the ping.” (如果成功) 或者一个错误信息(如果不成功)。

    

XML-RPC请求的例子       


   

POST /RPC2 HTTP/1.0
User-Agent: request
Host: blogsearch.google.com
Content-Type: text/xml
Content-length: 447

<?xml version="1.0"?>
<methodCall>
  <methodName>weblogUpdates.extendedPing</methodName>
  <params>
    <param>
      <value>Official Google Blog</value>
    </param>
    <param>
      <value>http://googleblog.blogspot.com/</value>
    </param>
    <param>
      <value>http://googleblog.blogspot.com/</value>
    </param>
    <param>
      <value>http://googleblog.blogspot.com/atom.xml</value>
    </param>
  </params>
</methodCall>

    

XML-RPC响应的例子      


   

HTTP/1.1 200 OK
Connection: close
Content-Length: 451
Content-Type: text/xml
Date: Sun, 30 Sep 2001 20:02:30 GMT
Server: Apache

<?xml version="1.0"?>
<methodResponse>
  <params>
    <param>
      <value>
        <struct>
          <member>
            <name>flerror</name>
            <value>
              <boolean>0</boolean>
            </value>
          </member>
          <member>
            <name>message</name>
              <value>Thanks for the ping.</value>
          </member>
        </struct>
      </value>
    </param>
  </params>
</methodResponse>

    

设置REST客户

    

REST客户的请求中包含如下元素:      

URL: http://blogsearch.google.com/ping      

参数:       

  • name = 博客的名字
  • url = 博客的URL
  • changesURL = RSS、RDF或Atom种子的URL (可选)

    

响应中将返回文本内容,在成功的时候是"Thanks for the ping.",在失败时是一条错误消息。      

例子:       

      

changes.xml的格式

Google 将所接受的“博客搜索” Ping 记录以XML格式发布到http://blogsearch.google.com/changes.xml。changes.xml文件格式包含一个根元素<weblogUpdates>和一个或多个的<weblog>元素。 

<weblogUpdates version="2" updated="Wed, 30 May 2006 14:10:00 GMT" count="1384779">
  <weblog name="Some Blog"
          url="http://googleblog.blogspot.com"
          rssUrl="http://googleblog.blogspot.com/atom.xml"
          when="1"/>
  ...
</weblogUpdates>

 

<weblogUpdates>元素 

 

  • version:用来指示一个主要的格式变化,目前的版本是2。
  • updated:以 HTTP 1.0格式表示的日期时间。它指示了该文件上一次更新的时间。
  • count:一个递增的数字,表示了changes.xml文件的版本。新版本changes.xml文件通常具有更大的count值。

 

<weblog>元素

 

  • name:Blog的名称。
  • url: Blog的url。
  • rssUrl: 相应的RSS、Atom或其它种子的URL。
  • when: <weblogUpdates>元素的updated属性对应的时间减去相应的 Ping 发生的时间的差值,单位为秒。

自由转载,转载请注明: 转载自WEB开发笔记 www.chhua.com

本文链接地址: 博客对搜索引擎Ping服务接口访问例子代码 http://www.chhua.com/web-note529

相关笔记

更多