Ping サービス
ping は、XML_RPC 標準プロトコルに基づく更新通知サービスで、検索エンジンがタイムリーにコンテンツの更新をクロールして更新できるように、ブログによってコンテンツの更新を迅速に通知するために使用されます。
コンピューターは RPC クライアントに相当し、RPC サーバーへのリクエストを開始し、メソッドの実行結果を受け入れるために使用されます。
Pythonの実装方法
PythonにはXMLRPClibが組み込まれており、XMLRPCプロトコルを簡単に扱えるため、パケットや解凍の手間が省けます。
使用方法は非常に簡単で、まずライブラリをインポートします:
import xmlrpclib
xmlrpc サーバー オブジェクトを生成します:
sever = xmlrpclib.ServerProxy(ServerProxy)
ここで、ServerProxy は検索エンジンの RPC サーバー エンドポイント アドレスです。
その後、RPC サーバー メソッドを実行できます。Baidu を例に挙げます。
result = server.weblogUpdates.extendedPing(blog_name,index_addr,new_post_addr,rss_addr)
weblogUpdates.extendedPing は実行する必要があるメソッドで、括弧内の 4 つのパラメーターは Baidu ping サービス ページで必要です。 result はメソッドによって返された実行結果です。
カプセル化コード
pingする必要があるリンクをping_all関数に入れるだけで、必要に応じてパラメータが渡されます。
#!/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 の学習または使用に役立つことを願っています。ご質問がある場合は、メッセージを残してください。
Python スクリプトを使用して Baidu や Google に ping を送信する方法に関するその他の関連記事については、PHP 中国語 Web サイトに注目してください。