热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

丛api的python的简单介绍

本文目录一览:1、如何使用python利用api获取天气预报

本文目录一览:


  • 1、如何使用python利用api获取天气预报


  • 2、Python中的API如何更好的理解


  • 3、如何通过python调用新浪微博的API来爬取数据


  • 4、python怎么调用api接口


  • 5、如何使用python 开发一个api


  • 6、Python API快餐教程(1) - 字符串查找API

如何使用python利用api获取天气预报

import requests

import json

__version_of_python__ = '3.6.2'

UrlOfWeatherApi = "..."

def req_api(city_code):

    params = {...}

    # 主要是使用 requests来请求API,准备必要参数 

    r = requests.get(UrlOfWeatherApi, params=params)

    # 如果返回数据格式为json的话

    doc = json.loads(r.text)

    print(doc)

    return doc

Python中的API如何更好的理解

比如你自己实现了一个好用的功能,你把它写成类,定义一些类的属性和方法。然后给别人用的时候,别人只需要知道你这个类有哪些关键的属性和方法,然后每个属性是什么意思以及调用这个方法能做什么事。别人直接拿来就用,不需要看你是怎么实现这个功能的,而你给他的每个方法的文档说明就是API文档了,这就是面向对象的思想吧。当然这只是类的API接口,还有通信类的网络接口等到。

如何通过python调用新浪微博的API来爬取数据

1:安装python(这个不多说啦)

2:下载新浪微博SDK的python包,解压为weibopy目录

3:申请AppKey,

流程:

1:通过oAuth认证

按我的理解简化如下:

用户在新浪微博给的页面输入账号密码,然后微博给应用一个PIN码,这样应用通过PIN码才有权限访问该用户的信息,而应用在整个过程中是接触不到密码的,所以用户觉得很安全,后果很满意

2:获得认证之后,就可以使用微博SDK提供的API获得信息啦

3:如果想设计web或者客户端应用的话,那就继续加个GUI好啦(未完成)

代码:

#!/usr/bin/python

import webbrowser

from weibopy.auth import OAuthHandler

from weibopy.api import API

AppKey = '2525355147'

AppSecret = '2e2c7bcdfc362eace266d1f2bf83fe6b'

my_auth = OAuthHandler(AppKey , AppSecret)

webbrowser.open(my_auth.get_authorization_url())

verifier = raw_input('PIN: ').strip()

my_auth.get_access_token(verifier)

my_api = API(my_auth)

for comment in my_api.mentions():

object = comment

id = object.__getattribute__("id")

text = object.__getattribute__("text")

print str(id) + " : " + text

python怎么调用api接口

调用windows API的方式其实有两种,第一种是通过第三方模块pywin32。

如果小伙伴安装了pip,可以通过pip安装pywin32

在命令行中运行pip pst查看是否安装了pywin32

如图

我们这里调用一个windows最基本的API,MessageBox,该接口可以显示一个对话框。

这里小编就不过多介绍了,只简单的描述MessageBox接口,MessageBox是windows的一个API接口,作用是显示一个对话框。

原型为:

int WINAPI MessageBox(HWND hWnd,LPCTSTR lpText,LPCTSTR lpCaption,UINT uType);

第一个参数hWnd,指明了该对话框属于哪个窗口,lpText为窗口提示信息,lpCaption则为窗口标题,uType则是定义对话框的按钮和图标。

这里我们需要导入win32api这个模块(隶属于pywin32),如果需要宏定义的,API的宏被定义在win32con(同隶属于pywin32)模块内。

这里我们只导入一个win32api模块,然后简单的调用MessageBox显示一个对话框即可。

如果我们不会安装pywin32模块,或者说不想安装这个三方模块。这时我们还有一个办法。

调用python内置模块ctypes,如果小伙伴有windows编程基础的话,或者看过一点MSDN的话,都该知道,Windows的API其实是以dll文件(动态链接库)方式存在的。

+和|效果是相同的

更多Python相关技术文章,请访问Python教程栏目进行学习!以上就是小编分享的关于python怎么调用api接口的详细内容希望对大家有所帮助,更多有关python教程请关注环球青藤其它相关文章!

如何使用python 开发一个api

使用 Python 和 Flask 设计 RESTful API

近些年来 REST (REpresentational State Transfer) 已经变成了 web services 和 web APIs 的标配。

在本文中我将向你展示如何简单地使用 Python 和 Flask 框架来创建一个 RESTful 的 web service。

什么是 REST?

六条设计规范定义了一个 REST 系统的特点:

客户端-服务器: 客户端和服务器之间隔离,服务器提供服务,客户端进行消费。

无状态: 从客户端到服务器的每个请求都必须包含理解请求所必需的信息。换句话说, 服务器不会存储客户端上一次请求的信息用来给下一次使用。

可缓存: 服务器必须明示客户端请求能否缓存。

分层系统: 客户端和服务器之间的通信应该以一种标准的方式,就是中间层代替服务器做出响应的时候,客户端不需要做任何变动。

统一的接口: 服务器和客户端的通信方法必须是统一的。

按需编码: 服务器可以提供可执行代码或脚本,为客户端在它们的环境中执行。这个约束是唯一一个是可选的。

什么是一个 RESTful 的 web service?

REST 架构的最初目的是适应万维网的 HTTP 协议。

RESTful web services 概念的核心就是“资源”。 资源可以用 URI 来表示。客户端使用 HTTP 协议定义的方法来发送请求到这些 URIs,当然可能会导致这些被访问的”资源“状态的改变。

HTTP 标准的方法有如下:

==========  =====================  ==================================

HTTP 方法   行为                   示例

==========  =====================  ==================================

GET         获取资源的信息        

GET         获取某个特定资源的信息

POST        创建新资源            

PUT         更新资源              

DELETE      删除资源              

==========  ====================== ==================================

REST 设计不需要特定的数据格式。在请求中数据可以以 JSON 形式, 或者有时候作为 url 中查询参数项。

设计一个简单的 web service

坚持 REST 的准则设计一个 web service 或者 API 的任务就变成一个标识资源被展示出来以及它们是怎样受不同的请求方法影响的练习。

比如说,我们要编写一个待办事项应用程序而且我们想要为它设计一个 web service。要做的第一件事情就是决定用什么样的根 URL 来访问该服务。例如,我们可以通过这个来访问:

http://[hostname]/todo/api/v1.0/

在这里我已经决定在 URL 中包含应用的名称以及 API 的版本号。在 URL 中包含应用名称有助于提供一个命名空间以便区分同一系统上的其它服务。在 URL 中包含版本号能够帮助以后的更新,如果新版本中存在新的和潜在不兼容的功能,可以不影响依赖于较旧的功能的应用程序。

下一步骤就是选择将由该服务暴露(展示)的资源。这是一个十分简单地应用,我们只有任务,因此在我们待办事项中唯一的资源就是任务。

我们的任务资源将要使用 HTTP 方法如下:

==========  ===============================================  =============================

HTTP 方法   URL                                              动作

==========  ===============================================  ==============================

GET         http://[hostname]/todo/api/v1.0/tasks            检索任务列表

GET         http://[hostname]/todo/api/v1.0/tasks/[task_id]  检索某个任务

POST        http://[hostname]/todo/api/v1.0/tasks            创建新任务

PUT         http://[hostname]/todo/api/v1.0/tasks/[task_id]  更新任务

DELETE      http://[hostname]/todo/api/v1.0/tasks/[task_id]  删除任务

==========  ================================================ =============================

我们定义的任务有如下一些属性:

id: 任务的唯一标识符。数字类型。

title: 简短的任务描述。字符串类型。

description: 具体的任务描述。文本类型。

done: 任务完成的状态。布尔值。

目前为止关于我们的 web service 的设计基本完成。剩下的事情就是实现它!

Flask 框架的简介

如果你读过 Flask Mega-Tutorial 系列,就会知道 Flask 是一个简单却十分强大的 Python web 框架。

在我们深入研究 web services 的细节之前,让我们回顾一下一个普通的 Flask Web 应用程序的结构。

我会首先假设你知道 Python 在你的平台上工作的基本知识。 我将讲解的例子是工作在一个类 Unix 操作系统。简而言之,这意味着它们能工作在 Linux,Mac OS X 和 Windows(如果你使用Cygwin)。 如果你使用 Windows 上原生的 Python 版本的话,命令会有所不同。

让我们开始在一个虚拟环境上安装 Flask。如果你的系统上没有 virtualenv,你可以从 上下载:

$ mkdir todo-api

$ cd todo-api

$ virtualenv flask

New python executable in flask/bin/python

Installing setuptools............................done.

Installing pip...................done.

$ flask/bin/pip install flask

既然已经安装了 Flask,现在开始创建一个简单地网页应用,我们把它放在一个叫 app.py 的文件中:

#!flask/bin/pythonfrom flask import Flaskapp = Flask(__name__)@app.route('/')def index():

   return "Hello, World!"if __name__ == '__main__':

   app.run(debug=True)

为了运行这个程序我们必须执行 app.py:

$ chmod a+x app.py

$ ./app.py

* Running on

* Restarting with reloader

现在你可以启动你的网页浏览器,输入  看看这个小应用程序的效果。

简单吧?现在我们将这个应用程序转换成我们的 RESTful service!

使用 Python 和 Flask 实现 RESTful services

使用 Flask 构建 web services 是十分简单地,比我在 Mega-Tutorial 中构建的完整的服务端的应用程序要简单地多。

在 Flask 中有许多扩展来帮助我们构建 RESTful services,但是在我看来这个任务十分简单,没有必要使用 Flask 扩展。

我们 web service 的客户端需要添加、删除以及修改任务的服务,因此显然我们需要一种方式来存储任务。最直接的方式就是建立一个小型的数据库,但是数据库并不是本文的主体。学习在 Flask 中使用合适的数据库,我强烈建议阅读 Mega-Tutorial。

这里我们直接把任务列表存储在内存中,因此这些任务列表只会在 web 服务器运行中工作,在结束的时候就失效。 这种方式只是适用我们自己开发的 web 服务器,不适用于生产环境的 web 服务器, 这种情况一个合适的数据库的搭建是必须的。

我们现在来实现 web service 的第一个入口:

#!flask/bin/pythonfrom flask import Flask, jsOnifyapp= Flask(__name__)tasks = [

   {

       'id': 1,

       'title': u'Buy groceries',

       'description': u'Milk, Cheese, Pizza, Fruit, Tylenol',

       'done': False

   },

   {

       'id': 2,

       'title': u'Learn Python',

       'description': u'Need to find a good Python tutorial on the web',

       'done': False

   }]@app.route('/todo/api/v1.0/tasks', methods=['GET'])def get_tasks():

   return jsonify({'tasks': tasks})if __name__ == '__main__':

   app.run(debug=True)

正如你所见,没有多大的变化。我们创建一个任务的内存数据库,这里无非就是一个字典和数组。数组中的每一个元素都具有上述定义的任务的属性。

取代了首页,我们现在拥有一个 get_tasks 的函数,访问的 URI 为 /todo/api/v1.0/tasks,并且只允许 GET 的 HTTP 方法。

这个函数的响应不是文本,我们使用 JSON 数据格式来响应,Flask 的 jsonify 函数从我们的数据结构中生成。

使用网页浏览器来测试我们的 web service 不是一个最好的注意,因为网页浏览器上不能轻易地模拟所有的 HTTP 请求的方法。相反,我们会使用 curl。如果你还没有安装 curl 的话,请立即安装它。

通过执行 app.py,启动 web service。接着打开一个新的控制台窗口,运行以下命令:

$ curl -i

HTTP/1.0 200 OK

Content-Type: application/json

Content-Length: 294

Server: Werkzeug/0.8.3 Python/2.7.3

Date: Mon, 20 May 2013 04:53:53 GMT

{

 "tasks": [

   {

     "description": "Milk, Cheese, Pizza, Fruit, Tylenol",

     "done": false,

     "id": 1,

     "title": "Buy groceries"

   },

   {

     "description": "Need to find a good Python tutorial on the web",

     "done": false,

     "id": 2,

     "title": "Learn Python"

   }

 ]

}

我们已经成功地调用我们的 RESTful service 的一个函数!

现在我们开始编写 GET 方法请求我们的任务资源的第二个版本。这是一个用来返回单独一个任务的函数:

from flask import abort@app.route('/todo/api/v1.0/tasks/int:task_id', methods=['GET'])def get_task(task_id):

   task = filter(lambda t: t['id'] == task_id, tasks)

   if len(task) == 0:

       abort(404)

   return jsonify({'task': task[0]})

第二个函数有些意思。这里我们得到了 URL 中任务的 id,接着 Flask 把它转换成 函数中的 task_id 的参数。

我们用这个参数来搜索我们的任务数组。如果我们的数据库中不存在搜索的 id,我们将会返回一个类似 404 的错误,根据 HTTP 规范的意思是 “资源未找到”。

如果我们找到相应的任务,那么我们只需将它用 jsonify 打包成 JSON 格式并将其发送作为响应,就像我们以前那样处理整个任务集合。

调用 curl 请求的结果如下:

$ curl -i

HTTP/1.0 200 OK

Content-Type: application/json

Content-Length: 151

Server: Werkzeug/0.8.3 Python/2.7.3

Date: Mon, 20 May 2013 05:21:50 GMT

{

 "task": {

   "description": "Need to find a good Python tutorial on the web",

   "done": false,

   "id": 2,

   "title": "Learn Python"

 }

}

$ curl -i

HTTP/1.0 404 NOT FOUND

Content-Type: text/html

Content-Length: 238

Server: Werkzeug/0.8.3 Python/2.7.3

Date: Mon, 20 May 2013 05:21:52 GMT

!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"

title404 Not Found/title

h1Not Found/h1

pThe requested URL was not found on the server./ppIf you     entered the URL manually please check your spelling and try again./p

当我们请求 id #2 的资源时候,我们获取到了,但是当我们请求 #3 的时候返回了 404 错误。有关错误奇怪的是返回的是 HTML 信息而不是 JSON,这是因为 Flask 按照默认方式生成 404 响应。由于这是一个 Web service 客户端希望我们总是以 JSON 格式回应,所以我们需要改善我们的 404 错误处理程序:

from flask import make_response@app.errorhandler(404)def not_found(error):

   return make_response(jsonify({'error': 'Not found'}), 404)

我们会得到一个友好的错误提示:

$ curl -i

HTTP/1.0 404 NOT FOUND

Content-Type: application/json

Content-Length: 26

Server: Werkzeug/0.8.3 Python/2.7.3

Date: Mon, 20 May 2013 05:36:54 GMT

{

 "error": "Not found"

}

接下来就是 POST 方法,我们用来在我们的任务数据库中插入一个新的任务:

from flask import request@app.route('/todo/api/v1.0/tasks', methods=['POST'])def create_task():

   if not request.json or not 'title' in request.json:

       abort(400)

   task = {

       'id': tasks[-1]['id'] + 1,

       'title': request.json['title'],

       'description': request.json.get('description', ""),

       'done': False

   }

   tasks.append(task)

   return jsonify({'task': task}), 201

添加一个新的任务也是相当容易地。只有当请求以 JSON 格式形式,request.json 才会有请求的数据。如果没有数据,或者存在数据但是缺少 title 项,我们将会返回 400,这是表示请求无效。

接着我们会创建一个新的任务字典,使用最后一个任务的 id + 1 作为该任务的 id。我们允许 description 字段缺失,并且假设 done 字段设置成 False。

我们把新的任务添加到我们的任务数组中,并且把新添加的任务和状态 201 响应给客户端。

使用如下的 curl 命令来测试这个新的函数:

$ curl -i -H "Content-Type: application/json" -X POST -d '{"title":"Read a book"}'

HTTP/1.0 201 Created

Content-Type: application/json

Content-Length: 104

Server: Werkzeug/0.8.3 Python/2.7.3

Date: Mon, 20 May 2013 05:56:21 GMT

{

 "task": {

   "description": "",

   "done": false,

   "id": 3,

   "title": "Read a book"

 }

}

注意:如果你在 Windows 上并且运行 Cygwin 版本的 curl,上面的命令不会有任何问题。然而,如果你使用原生的 curl,命令会有些不同:

curl -i -H "Content-Type: application/json" -X POST -d "{"""title""":"""Read a book"""}"

当然在完成这个请求后,我们可以得到任务的更新列表:

$ curl -i

HTTP/1.0 200 OK

Content-Type: application/json

Content-Length: 423

Server: Werkzeug/0.8.3 Python/2.7.3

Date: Mon, 20 May 2013 05:57:44 GMT

{

 "tasks": [

   {

     "description": "Milk, Cheese, Pizza, Fruit, Tylenol",

     "done": false,

     "id": 1,

     "title": "Buy groceries"

   },

   {

     "description": "Need to find a good Python tutorial on the web",

     "done": false,

     "id": 2,

     "title": "Learn Python"

   },

   {

     "description": "",

     "done": false,

     "id": 3,

     "title": "Read a book"

   }

 ]

}

剩下的两个函数如下所示:

@app.route('/todo/api/v1.0/tasks/int:task_id', methods=['PUT'])def update_task(task_id):

   task = filter(lambda t: t['id'] == task_id, tasks)

   if len(task) == 0:

       abort(404)

   if not request.json:

       abort(400)

   if 'title' in request.json and type(request.json['title']) != unicode:

       abort(400)

   if 'description' in request.json and type(request.json['description']) is not unicode:

       abort(400)

Python API快餐教程(1) - 字符串查找API

字符串是7种序列类型中的一种。

除了序列的操作函数,比如len()来求字符串长度之外,Python还为字符串提供丰富到可以写个编辑器的API.

首先,下面的查找API都是为了查找位置,或者查一共有几次这样的操作。

如果只是想判断一个字符串是不是另一个字符串的子串的话,使用序列的in运算符就可以了。

例:

原型:str.count(sub[, start[, end]])

字符串的count函数可以数出来有多少次匹配,我们看个例子,有5个ha和3个hei

输出为5和2.

haha只能匹配两次。

再加上扩展参数:

find函数的行为是,如果能找到,则返回在序列中的坐标,如果找不到,则返回-1. rfind是从右向左查找。我们来看例子:

输出值为0和6.

找不到的例子:

输出值都是-1.

完整形式:

index和rindex的功能与find和rfind基本上一致,除了在找不到时会抛出ValueError异常而不是返回-1.

例:

所以我们需要加try...except语句来处理之:

有时候,我们希望做从头匹配或者匹配尾部。这时候就要用到startswith函数和endswith函数。例:

这两个返回值均为True.

如果需要更复杂的匹配,还是需要正则表达式。与Java等语言不同,Python中的正则表达式有专门的模块,字符串的API不负责这个事情。


推荐阅读
  • 本文介绍如何使用 Angular 6 的 HttpClient 模块来获取 HTTP 响应头,包括代码示例和常见问题的解决方案。 ... [详细]
  • 本文介绍了如何使用JavaScript的Fetch API与Express服务器进行交互,涵盖了GET、POST、PUT和DELETE请求的实现,并展示了如何处理JSON响应。 ... [详细]
  • Python + Pytest 接口自动化测试中 Token 关联登录的实现方法
    本文将深入探讨 Python 和 Pytest 在接口自动化测试中如何实现 Token 关联登录,内容详尽、逻辑清晰,旨在帮助读者掌握这一关键技能。 ... [详细]
  • 为了解决不同服务器间共享图片的需求,我们最初考虑建立一个FTP图片服务器。然而,考虑到项目是一个简单的CMS系统,为了简化流程,团队决定探索七牛云存储的解决方案。本文将详细介绍使用七牛云存储的过程和心得。 ... [详细]
  • Django Token 认证详解与 HTTP 401、403 状态码的区别
    本文详细介绍了如何在 Django 中配置和使用 Token 认证,并解释了 HTTP 401 和 HTTP 403 状态码的区别。通过具体的代码示例,帮助开发者理解认证机制及权限控制。 ... [详细]
  • 本文档汇总了Python编程的基础与高级面试题目,涵盖语言特性、数据结构、算法以及Web开发等多个方面,旨在帮助开发者全面掌握Python核心知识。 ... [详细]
  • 2018-2019学年第六周《Java数据结构与算法》学习总结
    本文总结了2018-2019学年第六周在《Java数据结构与算法》课程中的学习内容,重点介绍了非线性数据结构——树的相关知识及其应用。 ... [详细]
  • 利用Selenium与ChromeDriver实现豆瓣网页全屏截图
    本文介绍了一种使用Selenium和ChromeDriver结合Python代码,轻松实现对豆瓣网站进行完整页面截图的方法。该方法不仅简单易行,而且解决了新版Selenium不再支持PhantomJS的问题。 ... [详细]
  • 我有一个SpringRestController,它处理API调用的版本1。继承在SpringRestControllerpackagerest.v1;RestCon ... [详细]
  • Python技巧:利用Cookie实现自动登录绕过验证码
    本文详细介绍了如何通过Python和Selenium库利用浏览器Cookie实现自动登录,从而绕过验证码验证。文章提供了具体的操作步骤,并附有代码示例,帮助读者理解和实践。 ... [详细]
  • Python自动化测试入门:Selenium环境搭建
    本文详细介绍如何在Python环境中安装和配置Selenium,包括开发工具PyCharm的安装、Python环境的设置以及Selenium包的安装方法。此外,还提供了编写和运行第一个自动化测试脚本的步骤。 ... [详细]
  • 优化Flask应用的并发处理:解决Mysql连接过多问题
    本文探讨了在Flask应用中通过优化后端架构来应对高并发请求,特别是针对Mysql 'too many connections' 错误的解决方案。我们将介绍如何利用Redis缓存、Gunicorn多进程和Celery异步任务队列来提升系统的性能和稳定性。 ... [详细]
  • 本文详细介绍如何使用 Python 集成微信支付的三种主要方式:Native 支付、APP 支付和 JSAPI 支付。每种方式适用于不同的应用场景,如 PC 网站、移动端应用和公众号内支付等。 ... [详细]
  • 当unique验证运到图片上传时
    2019独角兽企业重金招聘Python工程师标准model:public$imageFile;publicfunctionrules(){return[[[na ... [详细]
  • 近期我们开发了一款包含天气预报功能的万年历应用,为了满足这一需求,团队花费数日时间精心打造并测试了一个稳定可靠的天气API接口,现正式对外开放。 ... [详细]
author-avatar
my小甜心
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有