利用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中的文件和目录操作实现代码
Mar 13 Python
python支持断点续传的多线程下载示例
Jan 16 Python
Python中利用原始套接字进行网络编程的示例
May 04 Python
python去除所有html标签的方法
May 05 Python
python安装mysql-python简明笔记(ubuntu环境)
Jun 25 Python
浅谈python中的__init__、__new__和__call__方法
Jul 18 Python
Python基于scipy实现信号滤波功能
May 08 Python
python3.x+pyqt5实现主窗口状态栏里(嵌入)显示进度条功能
Jul 04 Python
Python二维码生成识别实例详解
Jul 16 Python
django中related_name的用法说明
May 20 Python
使用Python将xmind脑图转成excel用例的实现代码(一)
Oct 12 Python
使用Python下载抖音各大V视频的思路详解
Feb 06 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
SWFUpload与CI不能正确上传识别文件MIME类型解决方法分享
2011/04/18 PHP
Yii Framework框架获取分类下面的所有子类方法
2014/06/20 PHP
smarty模板引擎之分配数据类型
2015/03/30 PHP
在laravel中实现事务回滚的方法
2019/10/10 PHP
js中escape对应的C#解码函数 UrlDecode
2012/12/16 Javascript
javascript常用函数(2)
2015/11/05 Javascript
jQuery验证表单格式的使用方法
2017/01/10 Javascript
微信小程序教程系列之设置标题栏和导航栏(7)
2020/06/29 Javascript
json的结构与遍历方法实例分析
2017/04/25 Javascript
浅谈事件冒泡、事件委托、jQuery元素节点操作、滚轮事件与函数节流
2017/07/22 jQuery
帝国cms首页列表页实现点赞功能
2017/10/30 Javascript
JavaScript使用Math.random()生成简单的验证码
2019/01/21 Javascript
详解JS判断页面是在手机端还是在PC端打开的方法
2019/04/26 Javascript
[01:15:29]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第三局
2016/03/04 DOTA
[01:03:09]完美世界DOTA2联赛PWL S2 Forest vs SZ 第二场 11.25
2020/11/26 DOTA
使用PYTHON接收多播数据的代码
2012/03/01 Python
wxpython中自定义事件的实现与使用方法分析
2016/07/21 Python
python制作企业邮箱的爆破脚本
2016/10/05 Python
Python实现购物车程序
2018/04/16 Python
Python DataFrame 设置输出不显示index(索引)值的方法
2018/06/07 Python
Python输出\u编码将其转换成中文的实例
2018/12/15 Python
Appium+python自动化之连接模拟器并启动淘宝APP(超详解)
2019/06/17 Python
python实现爬取百度图片的方法示例
2019/07/06 Python
python装饰器练习题及答案
2019/11/01 Python
Python底层封装实现方法详解
2020/01/22 Python
python 爬虫如何正确的使用cookie
2020/10/27 Python
CSS3实现菜单悬停效果
2020/11/17 HTML / CSS
HTML5 移动页面自适应手机屏幕四类方法总结
2017/08/17 HTML / CSS
亚洲航空公司官方网站:AirAsia
2019/11/25 全球购物
幼儿园保育员责任书
2014/07/22 职场文书
高中校园广播稿
2014/10/21 职场文书
2014年前台接待工作总结
2014/12/05 职场文书
2014年工商所工作总结
2014/12/09 职场文书
保卫工作个人总结
2015/03/03 职场文书
单位同意报考证明
2015/06/17 职场文书
python 使用pandas读取csv文件的方法
2022/12/24 Python