利用Python脚本实现ping百度和google的方法


Posted in Python onJanuary 24, 2017

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 相关文章推荐
Python版的文曲星猜数字游戏代码
Sep 02 Python
Python多线程爬虫简单示例
Mar 04 Python
遗传算法之Python实现代码
Oct 10 Python
python Flask 装饰器顺序问题解决
Aug 08 Python
Python使用pickle模块报错EOFError Ran out of input的解决方法
Aug 16 Python
深入浅析Python中list的复制及深拷贝与浅拷贝
Sep 03 Python
对python数据切割归并算法的实例讲解
Dec 12 Python
Python3中exp()函数用法分析
Feb 19 Python
解决os.path.isdir() 判断文件夹却返回false的问题
Nov 29 Python
jupyter notebook 参数传递给shell命令行实例
Apr 10 Python
Python连接mysql数据库及简单增删改查操作示例代码
Aug 03 Python
解决python打开https出现certificate verify failed的问题
Sep 03 Python
解决python2.7用pip安装包时出现错误的问题
Jan 23 #Python
浅谈终端直接执行py文件,不需要python命令
Jan 23 #Python
在Linux命令行终端中使用python的简单方法(推荐)
Jan 23 #Python
Python 详解基本语法_函数_返回值
Jan 22 #Python
Python 数据结构之队列的实现
Jan 22 #Python
Python 数据结构之堆栈实例代码
Jan 22 #Python
Python 常用 PEP8 编码规范详解
Jan 22 #Python
You might like
PHPlet在Windows下的安装
2006/10/09 PHP
PHP常用代码
2006/11/23 PHP
PHP获得用户使用的代理服务器ip即真实ip
2006/12/31 PHP
PHP静态成员变量
2017/02/14 PHP
PHP读取XML格式文件的方法总结
2017/02/27 PHP
PHP使用SWOOLE扩展实现定时同步 MySQL 数据
2017/04/09 PHP
实例分析PHP将字符串转换成数字的方法
2019/01/27 PHP
php设计模式之适配器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
33种Javascript 表格排序控件收集
2009/12/03 Javascript
JavaScript程序中实现继承特性的方式总结
2016/06/24 Javascript
AngularJS ng-style中使用filter
2016/09/21 Javascript
Javascript 获取鼠标当前的位置实现方法
2016/10/27 Javascript
浅谈javascript中的数据类型转换
2016/12/27 Javascript
从零开始学习Node.js系列教程六:EventEmitter发送和接收事件的方法示例
2017/04/13 Javascript
详解AngularJS controller调用factory
2017/05/19 Javascript
Vue.js通用应用框架-Nuxt.js的上手教程
2017/12/25 Javascript
详解微信小程序审核不通过的解决方法
2018/01/17 Javascript
JavaScript实现浅拷贝与深拷贝的方法分析
2018/07/05 Javascript
Vue.js路由实现选项卡简单实例
2019/07/24 Javascript
JS获取动态添加元素的方法详解
2019/07/31 Javascript
vue + axios get下载文件功能
2019/09/25 Javascript
JS使用正则表达式实现常用的表单验证功能分析
2020/04/30 Javascript
利用Python学习RabbitMQ消息队列
2015/11/30 Python
python3中int(整型)的使用教程
2017/03/23 Python
Python内置模块hashlib、hmac与uuid用法分析
2018/02/12 Python
Python DataFrame设置/更改列表字段/元素类型的方法
2018/06/09 Python
用python3教你任意Html主内容提取功能
2018/11/05 Python
Python 继承,重写,super()调用父类方法操作示例
2019/09/29 Python
Python学习之os模块及用法
2020/06/03 Python
Python爬虫如何应对Cloudflare邮箱加密
2020/06/24 Python
HTML5触摸事件演化tap事件介绍
2016/03/25 HTML / CSS
教师辞职报告范文
2014/01/20 职场文书
加强机关作风建设心得体会
2014/10/22 职场文书
学校德育工作总结2015
2015/05/11 职场文书
市级三好生竞选稿
2015/11/21 职场文书
Java 实战项目之家居购物商城系统详解流程
2021/11/11 Java/Android