精华内容
下载资源
问答
  • python调用API接口

    2013-09-08 22:31:58
    如题,求代码,其实我也不太清楚调什么接口 可能是webservice的 代码最好是有注释 领导原话:“用Python写一小段程序,把服务器的describe信息拿下来,然后打印出来” 有点不理解,不知道他是想让我干嘛,求大神们...
  • Python调用API接口的几种方式 转自 one_day_day… 相信做过自动化运维的同学都用过API接口来完成某些动作。API是一套成熟系统所必需的接口,可以被其他系统或脚本来调用,这也是自动化运维的必修课。 本文主要...

    Python调用API接口的几种方式

    转自 one_day_day…

    相信做过自动化运维的同学都用过API接口来完成某些动作。API是一套成熟系统所必需的接口,可以被其他系统或脚本来调用,这也是自动化运维的必修课。

    本文主要介绍python中调用API的几种方式,下面是python中会用到的库。

    • urllib2

    • httplib2

    • pycurl

    • requests

    urllib2

    import urllib2, urllib
    github_url = ‘https://api.github.com/user/repos
    password_manager = urllib2.HTTPPasswordMgrWithDefaultRealm()
    password_manager.add_password(None, github_url, ‘user’, ‘*‘)
    auth = urllib2.HTTPBasicAuthHandler(password_manager) # create an authentication handler
    opener = urllib2.build_opener(auth) # create an opener with the authentication handler
    urllib2.install_opener(opener) # install the opener…
    request = urllib2.Request(github_url, urllib.urlencode({‘name’:’Test repo’, ‘description’: ‘Some test repository’})) # Manual encoding required
    handler = urllib2.urlopen(request)
    print handler.read()
    2. httplib2

    import urllib, httplib2
    github_url = ’
    h = httplib2.Http(“.cache”)
    h.add_credentials(“user”, “**“, ”
    data = urllib.urlencode({“name”:”test”})
    resp, content = h.request(github_url, “POST”, data)
    print content
    3. pycurl

    import pycurl, json
    github_url = ”
    user_pwd = “user:*
    data = json.dumps({“name”: “test_repo”, “description”: “Some test repo”})
    c = pycurl.Curl()
    c.setopt(pycurl.URL, github_url)
    c.setopt(pycurl.USERPWD, user_pwd)
    c.setopt(pycurl.POST, 1)
    c.setopt(pycurl.POSTFIELDS, data)
    c.perform()
    4. requests

    import requests, json
    github_url = ”
    data = json.dumps({‘name’:’test’, ‘description’:’some test repo’})
    r = requests.post(github_url, data, auth=(‘user’, ‘*‘))
    print r.json
    以上几种方式都可以调用API来执行动作,但requests这种方式代码最简洁,最清晰,建议采用。

    本文出自 “Linux和网络” 博客,转载请与作者联系!

    展开全文
  • python 调用 有道api接口

    千次阅读 2017-02-28 23:05:50
    初学python ,研究了几天,写了一个python 调用 有道api接口程序 效果看下图: 申明:代码仅供和我一样的初学者学习交流 有道api申请地址http://fanyi.youdao.com/openapi?path=data-mode 申请很简单的 ps:审核...

    初学python ,研究了几天,写了一个python 调用 有道api接口程序  

    效果看下图:


    申明:代码仅供和我一样的初学者学习交流

    有道api申请地址http://fanyi.youdao.com/openapi?path=data-mode

    申请很简单的   ps:审核不用花时间的,请勿滥用!!

    #-*- coding: UTF-8 -*- 
    import urllib
    import urllib2
    import requests 
    import json
    import sys 
    reload(sys) 
    sys.setdefaultencoding("utf-8")   
    #print(sys.getdefaultencoding())
    def youdao(text,c=1):   #c 1 翻译 2查词  
    	#textx=text.decode('gbk').encode('utf-8')    #将gbk编码转utf-8 编码    有道api要求传入 utf-8 编码	
    	from urllib import quote
    	#t=quote(textx)
    	t=quote(text)
    	url="接口"  #这个链接自己申请哈
    	r = requests.get(url)
    	if r.status_code==200:
    		res=json.loads(r.text,encoding='utf-8')
    		errorCode=res['errorCode']
    		title='『小风翻译』\n\n'
    		yd='\n数据来源 有道'   #这句必须有,对有道提供免费的api接口表示感谢。
    		if errorCode==0:
    			query=res['query']  #分析翻译  
    			translation=res['translation']
    			trans=u'原文:%s\n翻译:%s' % (query,translation[0])
    			trans_s=trans#.encode('GB18030')
    
    			basic_s=''
    			if 'basic' in res:   #分析有基础释义部分
    				phonetic=res['basic']['phonetic']
    				explains=res['basic']['explains']
    				phone_s=u'%s   %s\n---基本释义---\n' % (query,phonetic)
    				for x in explains:
    					basic_s=basic_s+x+'\n'
    				basic_s=phone_s+basic_s    #基本释义
    			
    			web_s=' '	
    			if 'web' in res:
    				web_s='---网络释义---\n'
    				web=res['web']
    				for x in web:
    					web_k=x['key']
    					web_v=x['value']
    					value=''
    					for v in web_v:
    						value=value+v+'; '
    					web_s=web_s+'√  '+web_k+'\n释义:'+value+'\n'
    			if c==1:
    				send=title+trans_s+'\n\n'+web_s+yd
    				return send#.encode('GB18030')
    			else:
    				send=title+basic_s+'\n'+web_s+yd
    				return send#.encode('GB18030')
    		elif errorCode==20:
    			return '亲,输入的字数过长了,小风做不到啊ヽ(≧□≦)ノ'
    		elif errorCode==30:
    			return 'What? 翻译失败了,再试一次吧(⊙o⊙)'
    		else :
    			return '服务器异常,错误%i,请联系QQ1849059316' % errorCode
    	else :
    		return '访问出错!请联系QQ1849059316'
    print youdao('include')

    注意:requests  库必须先安装  

    >>这里提供用ipi的方式安装,这种方式简单!另外的方式请移步百度,毕竟一抓一大把的东西没必要写了 

    方法:打开命令行   直接键入 pip install requests  然后就ok了  哈哈

    展开全文
  • pythonAPI接口调用

    万次阅读 2018-08-06 19:20:01
    首先什么叫APIAPI全称又叫做Application Programming Interface,简称应用程序接口,第一次接触接口调用的时候,完全不知道写的啥,因为我看的是整个项目,项目是tornado写的,看了半天的tornado,后来才发现方向...

            首先什么叫API,API全称又叫做Application Programming Interface,简称应用程序接口,第一次接触接口调用的时候,完全不知道写的啥,因为我看的是整个项目,项目是tornado写的,看了半天的tornado,后来才发现方向走错了,我直接看接口就行了,因为没人告诉我项目的整体流程,只能自己强行看了,只要找到程序的主入口,然后根据一步步函数调用就行了

            我在写接口的时候,因为要配合后台来写,浏览器中来访问,每次访问只需要传入对应的参数就可调用对应的接口,接口可以是别人写的,也有是合作公司提供的,合作公司提供的当然不是免费的了,现在基本都是没访问一次就收几毛钱等等,听到这你们可别小看这几毛钱啊,有时候调用了几百万次的话那这钱就多了,到这有的人就想,难道不能包月吗,抱歉,我也不知道,反正我们是按一条条算的,因为第一次接触,我以为花钱买的直接把我们要的数据全部买下来,存到本地的数据库中,用的时候直接从自己数据库中调就是了,后来我才发现我自己想多了。

            接口调用就是用python的requests库来访问,基本就是get或者post请求,有的接口会加密,然后我们就得用对方提供给我们的公钥加密或解密,然后在配上相应的参数进行访问,我们要的数据就在请求后的返回结果中,我见过的基本上都是json格式解析的,所以请求后可以用requests自带的json函数来解析它,然后将要的数据提取出来即可,访问一次得到一条数据。

            没看错,接口调用就是这么简单,但是要和后台写一起,我现在才发现requests库是多么强大,只要是http或者是https的都能爬,很庆幸自己当初看了一个礼拜把requests和bs4看完了,做爬虫不学requests真的不叫爬虫工程师,你用scrapy写到四=死看看能写出来吗?urllib的话基本淘汰了,有requests 还用那个干嘛

    展开全文
  • Python调用Azkaban API接口

    千次阅读 2019-02-26 15:50:57
    开发环境:Python3.5.2、Azkaban2.5.0。 py代码参考: ...#关闭调用api请求返回的警告 requests.packages.urllib3.disable_warnings() #定义azkaban地址、登录信息 str_url = 'https://192.168....

    开发环境:Python3.5.2、Azkaban2.5.0。 py代码参考:

    #-*- encoding:utf-8 -*-
    
    import requests
    import os
    
    #关闭调用api请求返回的警告
    requests.packages.urllib3.disable_warnings()
    
    #定义azkaban地址、登录信息
    str_url = 'https://192.168.0.1:8443'
    
    
    ##登录azkaban
    # username: 登录用户名
    # password: 登录密码
    def Login(username, password):
        #登录信息
        postdata = {'username':username,'password':password}
    
        #登录,通过verify=False关闭安全验证
        login_url = str_url + '?action=login'
        r = requests.post(login_url, postdata, verify=False).json()
    
        return r
    
    
    ##创建一个项目
    # projectname:指定的项目名称
    # description:项目说明,不允许为空。
    def Create_Project(sessionid, projectname, description):
        postdata = {'session.id': sessionid, 'name': projectname, 'description': description}
    
        upload_url = str_url + '/manager?action=create'
        r = requests.post(upload_url, postdata, verify=False).json()
        
        return r
    
    
    ##删除项目
    # projectname:需要删除的项目名称
    def Delete_Project(sessionid, projectname):
        postdata = {'session.id': sessionid, 'project': projectname}
    
        upload_url = str_url + '/manager?delete=true'
        r = requests.get(upload_url, postdata, verify=False)
    
        return str(r.status_code)
    
    
    ##上传项目zip文件
    # projectname:需要上传zip包的项目名称
    # filepath:项目zip文件
    def Upload_Project_Zip(sessionid, projectname, filepath):
        #从路径中获取文件名
        filename = os.path.basename(os.path.realpath(filepath))
        
        files = {'file':(filename, open(filepath,'rb'), 'application/zip')}
        postdata = {'session.id':sessionid, 'project':projectname, 'file':files, 'ajax':'upload'}
    
        upload_url = str_url + '/manager?ajax=upload'
        r = requests.post(upload_url, postdata, files=files, verify=False).json()
    
        return r
    
    
    ##获取一个项目的flow信息
    # projectname:项目名称
    def Fetch_Flows(sessionid, projectname):
        postdata = {'session.id':sessionid, 'project':projectname, 'ajax':'fetchprojectflows'}
    
        fetch_url = str_url + '/manager?ajax=fetchprojectflows'
        r = requests.get(fetch_url, postdata, verify=False).json()
    
        return r
    
    
    ##获取一个工作流的jobs
    # projectname:项目名称
    # flowid:flow名称
    def Fetch_Jobs(sessionid, projectname, flowid):
        postdata = {'session.id':sessionid, 'project':projectname, 'ajax':'fetchflowgraph', 'flow':flowid}
    
        fetch_url = str_url + '/manager?ajax=fetchflowgraph'
        r = requests.get(fetch_url, postdata, verify=False).json()
    
        return r
        
        
    ##获取工作流执行总体信息
    # projectname:项目名称
    # flowid:flow名称
    # start:从最后第几次运行结果开始查
    # length:查询几次的运行结果
    def Fetch_Executions(sessionid, projectname, flowid, start, length):
        postdata = {'session.id':sessionid, 'project':projectname, 'ajax':'fetchFlowExecutions', 'flow':flowid, 'start':start, 'length':length}
        
        fetch_url = str_url + '/manager?ajax=fetchFlowExecutions'
        r = requests.get(fetch_url, postdata, verify=False).json()
    
        return r
    
    
    ##获取一个正在执行的工作流的情况
    # projectname:项目名称
    # flowid:flow名称
    def Fetch_Running_Executions(sessionid, projectname, flowid):
        postdata = {'session.id':sessionid, 'project':projectname, 'ajax':'getRunning', 'flow':flowid}
        
        fetch_url = str_url + '/executor?ajax=getRunning'
        r = requests.get(fetch_url, postdata, verify=False).json()
    
        return r
    
    
    ##根据指定的Execution Id,获取工作流执行的详细信息
    # execid:Execution Id
    def Fetch_Flow_Execution_byid(sessionid, execid):
        postdata = {'session.id': sessionid, 'ajax': 'fetchexecflow', 'execid': execid}
    
        fetch_url = str_url + '/executor?ajax=fetchexecflow'
        r = requests.get(fetch_url, postdata, verify=False).json()
    
        return r
    
    
    ##根据指定的session.id、jobid、exec_id,获取对应的任务日志
    # offset:日志的偏移量,返回的日志将从第10个字符开始
    # length:日志数据的长度
    def Fetch_Execution_Job_Logs(sessionid, execid, jobid, offset, length):
        postdata = {'session.id': sessionid, 'ajax': 'fetchExecJobLogs', 'execid': execid, 'jobId': jobid, 'offset': offset,
                    'length': length}
    
        fetch_url = str_url + '/executor?ajax=fetchExecJobLogs'
        r = requests.get(fetch_url, postdata, verify=False).json()
    
        return r
    
    
    ##获取工作流执行的更新情况
    # lastUpdateTime:按上次更新时间筛选的条件。如果需要所有作业信息,则将值设置为-1。
    def Fetch_Flow_Execution_Updates(sessionid, execid, lastUpdateTime):
        postdata = {'session.id': sessionid, 'ajax': 'fetchexecflowupdate', 'execid': execid,
                    'lastUpdateTime': lastUpdateTime}
    
        fetch_url = str_url + '/executor?ajax=fetchexecflowupdate'
        r = requests.get(fetch_url, postdata, verify=False).json()
    
        return r
    
    
    ##执行一个工作流
    # projectname:项目名称
    # flowid:flow名称
    # settings:可选参数字典
    #   disabled(可选):此次执行禁用的作业名称列表。格式化为JSON数组字符串。如:["job_name_1","job_name_2","job_name_N"]
    #   successEmails(可选):执行成功发送的邮件列表。多个邮箱用[,|;|\s+]分隔。如:zh@163.com,zh@126.com
    #   failureEmails(可选):执行成功发送的邮件列表。多个邮箱用[,|;|\s+]分隔。如:zh@163.com,zh@126.com
    #   successEmailsOverride(可选):是否使用系统默认电子邮件设置覆盖成功邮件。值:true, false
    #   failureEmailsOverride(可选):是否使用系统默认电子邮件设置覆盖失败邮件。值:true, false
    #   notifyFailureFirst(可选):是否在第一次失败时发送电子邮件通知。值:true, false
    #   notifyFailureLast(可选):是否在最后失败时发送电子邮件通知。值:true, false
    #   failureAction(可选):如果发生错误,如何操作。值:finishcurrent、cancelimmediately、finishpossible
    #   concurrentOption(可选):如果不需要任何详细信息,请使用ignore。值:ignore, pipeline, skip
    #   flowOverride[flowProperty](可选):用指定的值重写指定的流属性。如:flowoverride[failure.email]=abc@163.com
    def Execute_Flow(sessionid, projectname, flowid, settings):
        postdata = {'session.id': sessionid, 'ajax': 'executeFlow', 'project': projectname, 'flow': flowid}
        for key in settings:
            postdata[key] = settings[key]
    
        fetch_url = str_url + '/executor?ajax=executeFlow'
        r = requests.get(fetch_url, postdata, verify=False).json()
    
        return r
    
    
    ##取消一个正在运行的工作流
    # execid:Execution id
    def Cancel_Flow_Execution(sessionid, execid):
        postdata = {'session.id': sessionid, 'ajax': 'cancelFlow', 'execid': execid}
    
        fetch_url = str_url + '/executor?ajax=cancelFlow'
        r = requests.get(fetch_url, postdata, verify=False).json()
    
        return r
    
    
    ##暂停一个正在运行的工作流
    # execid:Execution id
    def Pause_Flow_Execution(sessionid, execid):
        postdata = {'session.id': sessionid, 'ajax': 'pauseFlow', 'execid': execid}
    
        fetch_url = str_url + '/executor?ajax=pauseFlow'
        r = requests.get(fetch_url, postdata, verify=False).json()
    
        return r
    
    
    ##恢复一个已暂停的工作流
    # execid:Execution id
    def Resume_Flow_Execution(sessionid, execid):
        postdata = {'session.id': sessionid, 'ajax': 'resumeFlow', 'execid': execid}
    
        fetch_url = str_url + '/executor?ajax=resumeFlow'
        r = requests.get(fetch_url, postdata, verify=False).json()
    
        return r
    
    
    ##使用cron灵活设置调度
    # projectname:项目名称
    # flowid:flow名称
    # cronExpression:cron表达式。如:"0 23/30 5,7-10 ? * 6#3"
    def Flexible_scheduling_using_Cron(sessionid, projectname, flowid, cronExpression):
        postdata = {'session.id': sessionid, 'ajax': 'resumeFlow', 'projectName': projectname, 'flow': flowid, 'cronExpression': cronExpression}
    
        fetch_url = str_url + '/schedule?ajax=scheduleCronFlow'
        r = requests.post(fetch_url, postdata, verify=False).json()
    
        return r
    
    
    ##获取指定Project、flow的调度
    # projectid:项目id
    # flowid:flow名称
    def Fetch_Schedule(sessionid, projectid, flowid):
        postdata = {'session.id':sessionid, 'projectId':projectid, 'ajax':'fetchSchedule', 'flowId':flowid}
        
        fetch_url = str_url + '/schedule?ajax=fetchSchedule'
        r = requests.get(fetch_url, postdata, verify=False).json()
    
        return r
        
        
    ##取消工作流的调度
    # scheduleId:计划的ID。可以在scheduling页面找到
    def Unschedule_Flow(sessionid, scheduleId):
        postdata = {'session.id': sessionid, 'scheduleId': scheduleId}
    
        fetch_url = str_url + '/schedule?action=removeSched'
        r = requests.post(fetch_url, postdata, verify=False).json()
    
        return r
        
    
    ##设置告警模块
    # scheduleId:计划的ID
    # slaEmails:SLA警报电子邮件列表。如:zh@163.com;zh@126.com
    # settings:SLA规则字典。格式为settings[]=[id],[rule],[durati on],[emailAction],[killAction]。
    #       如:{"settings[0]":"aaa,SUCCESS,5:00,true,false";"settings[1]":"bbb,SUCCESS,10:00,false,true"}
    def Set_SLA(sessionid, scheduleId, slaEmails, settings):
        postdata = {'session.id': sessionid, 'ajax': 'setSla', 'scheduleId': scheduleId, 'slaEmails': slaEmails}
        for key in settings:
            postdata[key] = settings[key]
    
        fetch_url = str_url + '/schedule?ajax=setSla'
        r = requests.post(fetch_url, postdata, verify=False).json()
    
        return r
    
    
    ##获取资源调度的报警模块
    # scheduleId:计划的ID
    def Fetch_SLA(sessionid, scheduleId):
        postdata = {'session.id': sessionid, 'ajax': 'slaInfo', 'scheduleId': scheduleId}
    
        fetch_url = str_url + '/schedule?ajax=slaInfo'
        r = requests.get(fetch_url, postdata, verify=False).json()
    
        return r
    
    
    展开全文
  • python调用zabbix api接口实时展示数据

    千次阅读 2017-09-11 12:26:39
    python调用zabbix api接口实时展示数据 准备自已做一个运维管理平台,其中的监控部分,打算调用zabbix api接口来进行展示。 经过思考之后,计划获取如下内容:  1、 获得认证密钥  2、 获取zabbix所有的主机组 ...
  • Python调用REST API接口的几种方式

    千次阅读 2019-04-16 22:56:38
    相信做过自动化运维的同学都用过REST API接口来完成某些动作。API是一套成熟系统所必需的接口,可以被其他系统或脚本来调用,这也是自动化运维的必修课。 本文主要介绍python调用REST API的几种方式,下面是python...
  • # '''# Created on 2018-5-26## @author: yaoshuangqi# '''import urllib.requestimport urllib.parseimport jsonclass YoudaoFanyi():"...有道词典API"""VERSION = 1.1URL = 'http://fany...
  • python-爬虫基础-调用api接口或网页

    千次阅读 2019-08-25 21:32:26
    调用api服务主要是用python自带的urllib库。 本节先介绍两个例子,对api进行GET和POST调用。调用的api为上节课提供的例子。api接口服务 urllib提供了一系列用于操作URL的功能。 GET urllib的reques...
  • Python调用华为云API接口发短信

    千次阅读 2019-07-24 15:57:55
    【摘要】 用Python调用华为云API接口实现发短信,当然能给调用发短信接口前提条件是通过企业实名认证,而且有一个通过审核的短信签名,话不多说,showcode #!/usr/bin/python3 ''' 功 能:对华为云常用API接口进行...
  • python调用阿里云车牌识别API接口,详细步骤
  • 平时生活工作中,会遇到去掉照片背景的需求,如果你是PS高手,可以用ps解决,如果不是呢,或者对去背景的要求不高,还有一些电商平台,产品图必须是...会了python后,调用removebg接口,分分钟帮你去掉大量照片背景。
  • 安装 pycharm setting 中project interpreter 的库管理器安装 下面给出需要用到的库: pip install baidu-aip pip install wave ...申请百度api接口 http://ai.baidu.com/ 让后把你申请的APP ID 扔...
  • Python调用百度人脸识别API接口检测颜值。
  • 因此在这里我就分享一下python3调用virustotal的api接口实现本地文件上传到该网站并返回查毒结果的功能。 这里一般是exe文件,如果有其他格式文件,就需要其他操作,这里先不讲解。 下面是实现代码,这里的a...
  • Python 调用JSON接口实例

    千次阅读 2017-07-06 16:51:41
    假如我们知道豆瓣读书的API接口,https://api.douban.com/v2/book/1220563 想要调用JSON接口。 则使用如下代码实现:# #coding:utf-8import json import urllib2#若果只需要获取一个接口的数据 url = r'...
  • python调用C语言接口

    千次阅读 2019-10-09 06:02:55
    python调用C语言接口 注:本文所有示例介绍基于linux平台 在底层开发中,一般是使用C或者C++,但是有时候为了开发效率或者在写测试脚本的时候,会经常使用到python,所以这就涉及到一个问题,用C/C++写的底层库,...
  • 今天跟大家分享一个使用Python调用API实现信息查看和配置下发的实例,实验用的是Cisco ASAv,大家感兴趣的话也可以拿物理设备或者其他类型的设备进行测试玩一下,不同设备接口可能会有不同,但方法和套路都适用。
  • Python调用webservice接口

    万次阅读 2018-04-27 00:10:55
    from suds.client import Client url = "... test = Client(url) print(test) m=test.service.clientListen() print(m)python调用webservice接口,这...
  • 总需要调用到一些企业开放的API接口,虽然开放,但大多数并不免费,有些会有每天的调用限额,比如百度的行驶证识别每天好像是100次的免费试用额度,超过就得收钱了,本文主要是利用python调用易道博识的文字识别中的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 102,746
精华内容 41,098
关键字:

python调用api接口

python 订阅