利用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使用7z解压软件备份文件脚本分享
Feb 21 Python
Python去掉字符串中空格的方法
Mar 11 Python
python操作mongodb根据_id查询数据的实现方法
May 20 Python
Python的Django框架中TEMPLATES项的设置教程
May 29 Python
python实现将excel文件转化成CSV格式
Mar 22 Python
Pythony运维入门之Socket网络编程详解
Apr 15 Python
python2 中 unicode 和 str 之间的转换及与python3 str 的区别
Jul 25 Python
python 利用jinja2模板生成html代码实例
Oct 10 Python
python-视频分帧&多帧合成视频实例
Dec 10 Python
Python读取配置文件(config.ini)以及写入配置文件
Apr 08 Python
jupyter notebook运行命令显示[*](解决办法)
May 18 Python
完美解决Django2.0中models下的ForeignKey()问题
May 19 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
【星际争霸1】人族1v7家ZBath
2020/03/04 星际争霸
PHP操作mysql函数详解,mysql和php交互函数
2011/05/19 PHP
使用 PHPMAILER 发送邮件实例应用
2012/11/07 PHP
destoon出现验证码不显示时的紧急处理方法
2014/08/22 PHP
PHP使用PDO连接ACCESS数据库
2015/03/05 PHP
学习php设计模式 php实现适配器模式
2015/12/07 PHP
修改WordPress中文章编辑器的样式的方法详解
2015/12/15 PHP
php getcwd与dirname(__FILE__)区别详解
2016/09/24 PHP
Redis在Laravel项目中的应用实例详解
2017/08/11 PHP
Laravel框架基础语法与知识点整理【模板变量、输出、include引入子视图等】
2019/12/03 PHP
Three.js源码阅读笔记(Object3D类)
2012/12/27 Javascript
在新窗口打开超链接的方法小结
2013/04/14 Javascript
js将控件隐藏及display属性的使用介绍
2013/12/30 Javascript
jquery easyui中treegrid用法的简单实例
2014/02/18 Javascript
JavaScript动态改变HTML页面元素例如添加或删除
2014/08/10 Javascript
DEDECMS如何为文章添加HOT NEW标志图片
2015/08/14 Javascript
jQuery 实现评论等级好评差评特效
2016/05/06 Javascript
js以分隔符分隔数组中的元素并转换为字符串的方法
2016/11/16 Javascript
Node调用Java的示例代码
2017/09/20 Javascript
vue中使用gojs/jointjs的示例代码
2018/08/24 Javascript
微信小程序iBeacon测距及稳定程序的实现解析
2019/07/31 Javascript
layui清空,重置表单数据的实例
2019/09/12 Javascript
Vuex的API文档说明详解
2020/02/05 Javascript
JavaScript读取本地文件常用方法流程解析
2020/10/12 Javascript
JavaScript中遍历的十种方法总结
2020/12/15 Javascript
对python列表里的字典元素去重方法详解
2019/01/21 Python
Python库安装速度过慢解决方案
2020/07/14 Python
有关pycharm登录github时有的时候会报错connection reset的问题
2020/09/15 Python
CSS3圆角和渐变2种常用功能详解
2016/01/06 HTML / CSS
HTML5 背景的显示区域实现
2020/07/09 HTML / CSS
类的核心特性有哪些
2014/01/01 面试题
如果重写了对象的equals()方法,需要考虑什么
2014/11/02 面试题
公司年终奖分配方案
2014/06/16 职场文书
2015年学校后勤工作总结
2015/04/08 职场文书
小平小道观后感
2015/06/09 职场文书
企业催款函范本
2015/06/24 职场文书