Requests库的几种请求 - 通过API操作Github

本文内容来源:https://www.dataquest.io/mission/117/working-with-apis

本文的数据来源:https://en.wikipedia.org/wiki/International_Space_Station

本文摘要:通过requests库和github的api来操作github仓库,从而熟悉一下与网络数据交互的过程

API(Application Program Interface)的作用是查询和返回网络上的动态数据,譬如股票的价格信息和新闻的实时评论。通过API获取数据的过程就像你访问一个网页一样,向服务器提交请求,然后服务器返回相应的数据。通常使用requests库(http://www.python-requests.org/en/latest/)来提交请求的,本文所用的github的API地址为:https://developer.github.com/v3/

 

获取访问令牌

要想通过api来操作你的github,必须要先在github的网址(https://github.com/settings/tokens)上生成一个访问令牌

使用访问令牌而不是用用户名和密码的原因有两个:

  1. 通常放入了程序中的用户名和密码是很容易泄密的,别人看到了你的代码后知道了用户名和密码就能进行任意的操作。而如果有人使用了你的访问令牌,你可以随时注销掉该令牌
  2. 访问令牌是可以进行细粒度的权限配置,你可以设置该令牌只能查看你的github,从而保证了安全

 

获取到了访问令牌后,记得马上复制下来,并记录在程序中,往后的所有requests都必须带着这个访问令牌,记得必须要有token字段

{"Authorization": "token 975ef3a9dff1a7dc50d5f0a4341ecf5a89f201ab"}

注意:本文中的所有出现kylinlin的地方都要替换为你的账户名

 

GET请求

GET请求用户从服务器中获取信息

# 获取授权用户的信息

import requests

headers = {"Authorization": "975ef3a9dff1a7dc50d5f0a4341ecf5a89f201ab"} # 前两行会在后面的代码中忽略掉不写

user = requests.get(‘https://api.github.com/user‘, headers=headers).json()

print user

#如果get()方法里没有headers参数,则会返回如下结果:(表示要求认证)

{u‘documentation_url‘: u‘https://developer.github.com/v3‘, u‘message‘: u‘Requires authentication‘}

但并不是所有的方法都必须要带上headers参数

获取个人信息(将kylinlin替换为任意的帐户名都可以)

response = requests.get("https://api.github.com/users/kylinlin")

print response.status_code 

print response.json()

每一个访问都会生成一个状态码,用属性status_code表示,这个状态码用来表示这个访问的结果:

  1. 200 -- 一切正常,返回了要求的结果
  2. 301 -- 服务器将该请求重定向到其他网站
  3. 401 -- 身份认证出错
  4. 400 -- 服务器认为这是一个错误请求
  5. 403 -- 你无权访问该资源
  6. 404 -- 访问的资源不存在

一个请求返回的内容默认是字符串格式,要提取该内容中的某些信息,最方便的方法就是将字符串转换成python对象,而json()方法用来实现这个功能的。

在get方法里带上参数,requests.get()方法里的params参数就是url里的参数,与headers参数不同,headers参数的值会写在请求头里,而params参数的值会写在url里,譬如要获取github作者所关注的项目,并将50条结果作为一页,获取第一页的内容。此时的url实际上是这样的:https://api.github.com/users/kylinlin/starred?pre_page=50&page=1

params = {"per_page": 50, "page": 1}

response = requests.get("https://api.github.com/users/kylinlin/starred", params=params)

page1_repos = response.json()

print page1_repos

 

POST请求

POST请求用于向服务器发送信息,然后在服务器上创建对象,譬如要创建一个新的项目

payload = {‘name‘:‘learning-about-apis‘}  # name参数的值是要创建的项目名称

status = requests.post(‘https://api.github.com/user/repos‘,

    headers=headers, json=payload).status_code # json参数会将payload变量转化为字典格式

print status   # 输出201就表明项目创建成功

 

PATCH和PUT请求

有时候我们只是要更新一个项目的信息,此时就可以使用PATCH或PUT方法,譬如要更新刚才创建的项目的描述信息

payload = {‘description‘: ‘Learning about requests!‘, ‘name‘: ‘learning-about-apis‘}

status = requests.patch(‘https://api.github.com/repos/kylinlin/learning-about-apis‘, json=payload, headers=headers).status_code

print status

# patch方法成功后会返回200

DELETE请求

DELETE请求用于删除服务器上的对象,譬如要删除刚才的项目

status = requests.delete(‘https://api.github.com/repos/kylinlin/learning-about-apis‘,

    headers=headers).status_code 

print status

#输出204就表示删除成功

时间: 2024-08-06 18:43:31

Requests库的几种请求 - 通过API操作Github的相关文章

大概看了一天python request源码。写下python requests库发送 get,post请求大概过程。

python requests库发送请求时,比如get请求,大概过程. 一.发起get请求过程:调用requests.get(url,**kwargs)-->request('get', url, **kwargs)-->session.request(method="get", url=url, **kwargs)-->session.send(request, **kwargs)-->adapter.send(request, **kwargs)-->

requests库和urllib包对比

python中有多种库可以用来处理http请求,比如python的原生库:urllib包.requests类库.urllib和urllib2是相互独立的模块,python3.0以上把urllib和urllib2合并成一个库了,requests库使用了urllib3.requests库的口号是"HTTP For Humans",为人类使用HTTP而生,用起来不知道要比python原生库好用多少呢,比起urllib包的繁琐,requests库特别简洁和容易理解.话不多说,代码为证~~~ 下

一个咸鱼的Python爬虫之路(一):requests库

作为一个咸鱼大学打了3年游戏才幡然醒悟,现在开始学点东西,这里记录下自己的所学. urllib库之前有些了解就不写了,从requests 库开始吧(ˉ▽ ̄-) . 首先要说的是一定要用好官方文档:http://docs.python-requests.org/en/master/ 先来看个列子吧: 下面介绍requests库的几种基本用法: 具体代码略过参考官方文档练习就好,这里面get是最常用的方法. response对象包含了服务器返回的所有信息,也包含了requests的请求信息. 属性

python WEB接口自动化测试之requests库详解

1.Get请求 前提: requests库是python的第三方库,需要提前安装哦,可以直接用pip命令:`python –m pip install requests` 按照惯例,先将requests库的属性打印出来,看看哪些属性. >>> import requests >>> dir(requests) #查看requests库的属性 ['ConnectionError', 'HTTPError', 'NullHandler', 'PreparedRequest'

python爬虫之requests库

requests库介绍 发送http请求的第三方库,兼容python2和python3 安装: pip install requests 使用: import requests发送请求response = requests.get(url)response = requests.post(url) 响应内容请求返回的值是一个response对象,是对http协议服务端返回数据的封装response对象主要属性和方法: response.status_code  返回码  response.hea

请求库之requests库

目录 介绍 基于GET请求 1.基本请求 2.带参数的GET请求->params 带参数的GET请求->headers 带参数的GET请求->cookie 基于POST请求 1.介绍 2.发送post请求,模拟浏览器的登录行为 requests.session()自动帮我们保存cookie信息 补充 响应response respone属性 获取二进制数据 爬取大文件 解析json数据 SSL Cert Verification 使用代理 超时设置 异常处理 上传文件 介绍 #介绍:使用

从0开始学爬虫10之urllib和requests库与github/api的交互

urllib库的使用 # coding=utf-8 import urllib2 import urllib # htpbin模拟的环境 URL_IP="http://10.11.0.215:8080" URL_GET = "http://10.11.0.215:8080/get" def use_simple_urllib2(): response = urllib2.urlopen(URL_IP) print '>>>> Response

requests库核心API源码分析

requests库是python爬虫使用频率最高的库,在网络请求中发挥着重要的作用,这边文章浅析requests的API源码. 该库文件结构如图: 提供的核心接口在__init__文件中,如下: from . import utils from . import packages from .models import Request, Response, PreparedRequest from .api import request, get, head, post, patch, put,

使用requests库提交multipart/form-data 格式的请求

前言: Requests是用Python语言编写,基于urllib,采用Apache2 Licensed开源协议的HTTP库.它比urllib更加方便,可以节约我们大量的工作,完全满足HTTP测试需求.更重要的一点是它支持Python3哦! 一.安装 Requests >>>pip3 install requests 二.multipart/form-data 格式的请求举例 如下图所示,请求里面有4个参数:handle,option,modify_offer_type,Filedata