利用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使用calendar输出指定年份全年日历的方法
Apr 04 Python
Python记录详细调用堆栈日志的方法
May 05 Python
Python使用设计模式中的责任链模式与迭代器模式的示例
Mar 02 Python
Python入门_浅谈for循环、while循环
May 16 Python
python编写朴素贝叶斯用于文本分类
Dec 21 Python
和孩子一起学习python之变量命名规则
May 27 Python
tensorflow 获取模型所有参数总和数量的方法
Jun 14 Python
详解关于Django中ORM数据库迁移的配置
Oct 08 Python
python3+pyqt5+itchat微信定时发送消息的方法
Feb 20 Python
Python 3.8新特征之asyncio REPL
May 28 Python
python sleep和wait对比总结
Feb 03 Python
python 中[0]*2与0*2的区别说明
May 10 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
destoon在各个服务器下设置URL Rewrite(伪静态)的方法
2014/06/21 Servers
PHP 5.6.11中CURL模块问题的解决方法
2016/08/08 PHP
学习YUI.Ext 第六天--关于树TreePanel(Part 2异步获取节点)
2007/03/10 Javascript
js 变量类型转换常用函数与代码[比较全]
2009/12/01 Javascript
jQuery实现防止提交按钮被双击的方法
2015/03/24 Javascript
js+html5实现canvas绘制简单矩形的方法
2015/06/05 Javascript
JS组件Form表单验证神器BootstrapValidator
2016/01/26 Javascript
去除字符串左右两边的空格(实现代码)
2016/05/12 Javascript
Bootstrap基本布局实现方法详解
2016/11/25 Javascript
JS实现iframe自适应高度的方法示例
2017/01/07 Javascript
微信小程序 地图map详解及简单实例
2017/01/10 Javascript
js仿微信公众平台打标签功能
2017/04/08 Javascript
javascript input输入框模糊提示功能的实现
2017/09/25 Javascript
使用ef6创建oracle数据库的实体模型遇到的问题及解决方案
2017/11/09 Javascript
webpack构建换肤功能的思路详解
2017/11/27 Javascript
VUE Error: getaddrinfo ENOTFOUND localhost
2018/05/03 Javascript
JavaScript正则表达式验证登录实例
2020/03/18 Javascript
Python的组合模式与责任链模式编程示例
2016/02/02 Python
Python的爬虫程序编写框架Scrapy入门学习教程
2016/07/02 Python
python生成圆形图片的方法
2020/03/25 Python
Pandas:Series和DataFrame删除指定轴上数据的方法
2018/11/10 Python
对python打乱数据集中X,y标签对的方法详解
2018/12/14 Python
Python提取特定时间段内数据的方法实例
2019/04/01 Python
tensorflow之并行读入数据详解
2020/02/05 Python
浅析Django 接收所有文件,前端展示文件(包括视频,文件,图片)ajax请求
2020/03/09 Python
详解Python中namedtuple的使用
2020/04/27 Python
python中的对数log函数表示及用法
2020/12/09 Python
CSS3的文字阴影—text-shadow的使用方法
2012/12/25 HTML / CSS
Html5页面中的返回实现的方法
2018/02/26 HTML / CSS
西铁城美国官方网站:Citizen Watch美国
2019/11/08 全球购物
思想专业自荐信范文
2013/12/25 职场文书
电子商务自荐书范文
2014/01/04 职场文书
计算机应届毕业生自荐信范文
2014/02/23 职场文书
文明家庭事迹材料
2014/12/20 职场文书
单身狗福利?Python爬取某婚恋网征婚数据
2021/06/03 Python
springboot拦截器无法注入redisTemplate的解决方法
2021/06/27 Java/Android