博客更新以后需要通知搜索引擎来进行抓取,使用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.0\r\n"; $out.="Host: {$trackback_url['host']}\r\n"; $out.="Content-Type: text/xml; charset=utf-8\r\n"; $query_string="<?xml version=\"1.0\"?>\r\n<methodCall>\r\n<methodName>weblogUpdates.extendedPing</methodName>\r\n<params>\r\n<param>\r\n<value>{$blogname}</value>\r\n</param>\r\n<param>\r\n<value>{$webaddress}</value>\r\n</param>\r\n<param>\r\n<value>{$urladdress}</value>\r\n</param>\r\n<param>\r\n<value>{$rssaddress}</value>\r\n</param>\r\n<param>\r\n<value>{$categoryname}</value>\r\n</param>\r\n</params>\r\n</methodCall>"; $out.='Content-Length: '.strlen($query_string)."\r\n"; $out.="User-Agent: Bo-Blog\r\n\r\n"; $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客户的请求应包含如下元素:??????
????
????
???
- 站点名
- 站点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
评论