利用Python脚本实现ping百度和google的方法
Ping服务
ping是基于XML_RPC标准协议的更新通告服务,用于Blog把内容更新快速通知给搜索引擎,以便搜索引擎及时进行抓取和更新。
计算机就相当于RPCClient,用于向RPCServer发起请求,并接受方法的执行结果。
Python实现方法
Python内置了XMLRPClib,可以很方便地处理XMLRPC协议,免去了封包解包的麻烦。
用法很简单,首先导入库:
importxmlrpclib
生成xmlrpc服务器对象:
sever=xmlrpclib.ServerProxy(ServerProxy)
其中ServerProxy是搜索引擎的RPC服务器端点地址。
然后便可以执行RPC服务器的方法了,以百度为例:
result=server.weblogUpdates.extendedPing(blog_name,index_addr,new_post_addr,rss_addr)
weblogUpdates.extendedPing是需要执行的方法,其中括号中的四个参数是百度ping服务页面上所要求的。result是方法返回的执行结果。
封装代码
在ping_all函数里放上需要ping的链接就可以了,参数按照需求传。
#!/usr/bin/envpython
#-*-coding:utf-8-*-
importjson
importxmlrpclib
fromdbimportredis
defping(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)
printresult
defping_all(*args,**kwds):
ping_url_list=[
'http://ping.baidu.com/ping/RPC2',
'http://rpc.pingomatic.com/',
'http://blogsearch.google.com/ping/RPC2',
]
forurlinping_url_list:
ping(url,*args,**kwds)
defmain():
client=redis.pubsub()
client.subscribe(['ping'])
whileTrue:
foriteminclient.listen():
ifitem['type']=='message':
msg=item['data']
ifmsg:
post=json.loads(msg)
printpost
ping_all(post.get('site_name'),post.get('site_host'),
post.get('post_url'),post.get('rss_url'))
deftest():
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能带来一定的帮助,如果有疑问大家可以留言交流。