利用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的Django框架结合jQuery实现AJAX购物车页面
Apr 11 Python
Windows下安装Django框架的方法简明教程
Mar 28 Python
解决python通过cx_Oracle模块连接Oracle乱码的问题
Oct 18 Python
一文了解Python并发编程的工程实现方法
May 31 Python
在pyqt5中QLineEdit里面的内容回车发送的实例
Jun 21 Python
python实现大文件分割与合并
Jul 22 Python
Python实现PyPDF2处理PDF文件的方法示例
Sep 25 Python
Python 实现OpenCV格式和PIL.Image格式互转
Jan 09 Python
postman和python mock测试过程图解
Feb 22 Python
python GUI库图形界面开发之PyQt5多线程中信号与槽的详细使用方法与实例
Mar 08 Python
Python 解决相对路径问题:"No such file or directory"
Jun 05 Python
PyTorch中permute的使用方法
Apr 26 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
PHP中HTTP方式下的Gzip压缩传输方法举偶
2007/02/15 PHP
PHP define函数的使用说明
2008/08/27 PHP
php && 逻辑与运算符使用说明
2010/03/04 PHP
php和asp语法上的区别总结
2019/05/12 PHP
可实现多表单提交的javascript函数
2007/08/01 Javascript
jquery判断单个复选框是否被选中的代码
2009/09/03 Javascript
重载toString实现JS HashMap分析
2011/03/13 Javascript
poshytip 基于jquery的 插件 主要用于显示微博人的图像和鼠标提示等
2012/10/12 Javascript
基于JQuery 滑动与动画的说明介绍
2013/04/18 Javascript
Javascript浅谈之this
2013/12/17 Javascript
删除条目时弹出的确认对话框
2014/06/05 Javascript
javascript的动态加载、缓存、更新以及复用(一)
2014/06/09 Javascript
javascript原生和jquery库实现iframe自适应高度和宽度
2014/07/18 Javascript
Js与Jq 获取页面元素值的方法和差异对比
2015/04/30 Javascript
jQuery中的siblings用法实例分析
2015/12/24 Javascript
javascript匀速运动实现方法分析
2016/01/08 Javascript
JQuery中attr属性和jQuery.data()学习笔记【必看】
2016/05/18 Javascript
JavaScript实现一个带AI的井字棋游戏源码
2018/05/21 Javascript
Vue中使用的EventBus有生命周期
2018/07/12 Javascript
详解微信小程序实现WebSocket心跳重连
2018/07/31 Javascript
代码整洁之道(重构)
2018/10/25 Javascript
js实现鼠标滑动到某个div禁止滚动
2020/09/17 Javascript
Python计算两个日期相差天数的方法示例
2017/05/23 Python
Python基于PyGraphics包实现图片截取功能的方法
2017/12/21 Python
python批量导入数据进Elasticsearch的实例
2018/05/30 Python
python 常用的基础函数
2018/07/10 Python
Python 如何创建一个线程池
2020/07/28 Python
Python环境配置实现pip加速过程解析
2020/11/27 Python
租车协议书范本
2014/04/22 职场文书
村居抓节水倡议书
2014/05/19 职场文书
活动总结书怎么写
2015/05/11 职场文书
大国崛起日本观后感
2015/06/02 职场文书
2016大学生社会实践心得体会范文
2016/01/14 职场文书
导游词之安徽巢湖
2019/12/26 职场文书
Golang bufio详细讲解
2022/04/21 Golang
django项目、vue项目部署云服务器的详细过程
2022/07/23 Servers