Ping服务
ping 是基于 XML_RPC 标准协议的更新通告服务,用于Blog把内容更新快速通知给搜索引擎,以便搜索引擎及时进行抓取和更新。
计算机就相当于 RPC Client ,用于向 RPC Server 发起请求,并接受方法的执行结果。
Python实现方法
Python 内置了 XMLRPClib ,可以很方便地处理XMLRPC协议,免去了封包解包的麻烦。
用法很简单,首先导入库:
1
|
import xmlrpclib
|
生成xmlrpc服务器对象:
1
|
sever = xmlrpclib.ServerProxy(ServerProxy)
|
其中 ServerProxy 是搜索引擎的RPC服务器端点地址。
然后便可以执行RPC服务器的方法了,以百度为例:
1
|
result = server.weblogUpdates.extendedPing(blog_name,index_addr,new_post_addr,rss_addr)
|
weblogUpdates.extendedPing
是需要执行的方法,其中括号中的四个参数是 百度ping服务页面 上所要求的。 result 是方法返回的执行结果。
封装代码
在ping_all
函数里放上需要ping的链接就可以了,参数按照需求传。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import json
import xmlrpclib
from db import redis
def ping(ping_url, * args, * * kwds):
"""args: site_name, site_host, post_url, rss_url."""
rpc_server = xmlrpclib.ServerProxy(ping_url)
result = rpc_server.weblogUpdates.extendedPing( * args)
print result
def ping_all( * args, * * kwds):
ping_url_list = [
'http://ping.baidu.com/ping/RPC2' ,
'http://rpc.pingomatic.com/' ,
'http://blogsearch.google.com/ping/RPC2' ,
]
for url in ping_url_list:
ping(url, * args, * * kwds)
def main():
client = redis.pubsub()
client.subscribe([ 'ping' ])
while True :
for item in client.listen():
if item[ 'type' ] = = 'message' :
msg = item[ 'data' ]
if msg:
post = json.loads(msg)
print post
ping_all(post.get( 'site_name' ), post.get( 'site_host' ),
post.get( 'post_url' ), post.get( 'rss_url' ))
def test():
site_name = "tech2ipo"
site_host = "http://alpha.tech2ipo.com"
post_url = 'http://alpha.tech2ipo.com/100855'
rss_url = "http://alpha.tech2ipo.com/rss/alpha.tech2ipo.com"
ping_all(site_name, site_host, post_url, rss_url)
if __name__ = = '__main__' :
main()
|
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者使用python能带来一定的帮助,如果有疑问大家可以留言交流。
原文链接:http://ningning.today/2015/07/30/web/Python脚本ping百度和google/