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/