首頁  >  文章  >  後端開發  >  利用Python腳本實現ping百度和google的方法

利用Python腳本實現ping百度和google的方法

高洛峰
高洛峰原創
2017-02-03 16:10:492947瀏覽

Ping服務

ping 是基於 XML_RPC 標準協定的更新通告服務,用於Blog把內容更新快速通知給搜尋引擎,以便搜尋引擎及時進行抓取和更新。

計算機相當於 RPC Client ,用於向 RPC Server 發起請求,並接受方法的執行結果。

Python實作方法

Python 內建了 XMLRPClib ,可以很方便地處理XMLRPC協議,免去了封包解包的麻煩。

用法很簡單,首先導入庫:

import xmlrpclib

產生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/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腳本實現ping百度和google的方法相關文章請關注PHP中文網!


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn