博客
关于我
Requests实践详解
阅读量:428 次
发布时间:2019-03-06

本文共 4308 字,大约阅读时间需要 14 分钟。

Requests 是 Python 中一个非常强大的 HTTP 库,基于 urllib 但功能更强大,适合处理 HTTP 请求和解析响应。它的安装和使用都非常简单,适合开发者快速进行网络操作。

Requests 的安装

安装 Requests 只需在终端输入以下命令:

pip install requests

安装完成后,你可以立即开始使用 Requests。

Requests 的使用

请求方式

Requests 提供了多种请求方式,包括 GET、POST、DELETE、PUT 等。例如:

import requests
requests.post("http://httpbin.org/post")
requests.put("http://httpbin.org/put")
requests.delete("http://httpbin.org/delete")
requests.get("http://httpbin.org/get")

响应对象

每次请求都会返回一个响应对象,该对象提供了多种方法来解析响应数据:

  • response.json():将响应转换为 JSON 格式。
  • response.text:以字符串形式返回响应内容。
  • response.content:以二进制形式返回响应内容。
  • response.url:返回请求的 URL。
  • response.status_code:返回请求的状态码。
  • response.reason:返回状态码对应的原因。
  • response.headers:返回响应头。
  • response.cookies:返回 cookies 信息。
  • response.raw:返回原始响应体。
  • response.encoding:返回编码格式。

实际案例

不带参数的 GET 请求
import requests
response = requests.get('http://www.baidu.com')
print(response.text)
带参数的 GET 请求
import requests
r = requests.get('http://www.baidu.com/s', params={'wd': '温一壶清酒'})
print(r.url)
print(r.text)
常见登录 POST 请求
import requests
headers = {'Authorization': ''}
data = {'username': 'user', 'password': 'password'}
r = requests.post(url='https://example.com/login', data=data, headers=headers)
print(r.status_code)
print(r.text)
Basic Auth 登录 POST 请求
import requests
from requests.auth import HTTPBasicAuth
auth = HTTPBasicAuth('username', 'password')
r = requests.post(url='https://example.com/login', auth=auth)
print(r.status_code)
print(r.text)
设置请求头
import requests
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'}
r = requests.get('http://www.example.com', headers=headers)
print(r.text)
证书验证
import requests
import urllib3
urllib3.disable_warnings()
r = requests.get('https://www.12306.cn', verify=False)
print(r.status_code)
print(r.text)

Requests 的综合实践

以下是一个综合实践示例,展示了动态传参、请求头设置、JSON 入参嵌套等功能:

import requests
import json
host = '' # 替换为实际的主机名或 IP 地址
def better_output(json_str):
return json.dumps(json.loads(json_str), indent=4, ensure_ascii=False)
def login():
headers = {'Authorization': ''}
data = {'username': 'user', 'password': 'password'}
url = host + '/token'
r = requests.post(url=url, data=data, headers=headers, verify=False)
global token
token = r.json()['access_token']
print("登录接口响应的状态码为:", r.status_code)
print("登录接口响应的数据为:", better_output(r.text))
print("获取到的 token 值为:", token)
def search_gender_data():
headers = {
'Content-Type': 'application/json;charset=utf-8',
'Authorization': 'Bearer ' + token
}
url = host + '/api'
r1 = requests.get(url=url, headers=headers)
global gender
gender = r1.json()['values'][0]['code']
print("搜索接口响应的状态码为:", r1.status_code)
print("搜索接口响应的数据为:", better_output(r1.text))
print("获取的性别 code 为:", gender)
def create_user():
headers = {
'Content-Type': 'application/json;charset=utf-8',
'Authorization': 'Bearer ' + token
}
data = {
"duty": "",
"dutyCode": "",
"rank": "",
"rankCode": "",
"deleted": 'false',
"userId": "",
"employeeId": "",
"position": "测试负责人",
"companyMainPosition": 'true'
}
data1 = {
"departmentPath": "",
"directManager": "",
"directManagerId": '',
"directManagerName": "",
"employeeType": '',
"email": "10150001@qq.com",
"mobile": "15110151015",
"mobileCode": "86",
"countryCode": "CN",
"employeeTypeCode": "",
"userOID": '',
"employeeID": "10150001",
"fullName": "10150001接口新增",
"status": 1001,
"manager": 'false',
"leavingDate": "3018-01-31T16:00:00.000Z",
"gender": "",
"genderCode": gender,
"birthday": "",
"entryTime": "",
"customFormValues": [],
'userJobsDTOs': [data]
}
url = host + '/api'
create_u = requests.post(url=url, json=data1, headers=headers)
print("创建人员接口 url 为:", url)
print("创建人员接口响应的状态码为:", create_u.status_code)
print("创建人员接口响应的数据为:", better_output(create_u.text))
if __name__ == '__main__':
login()
search_gender_data()
create_user()

总结

通过上述学习和实践,我对 Requests 有了更深入的理解。它极大地简化了 HTTP 请求的处理流程,适合处理各种网络操作。无论是简单的数据获取,还是复杂的 API 接口调用,Requests 都能提供强大而灵活的支持。如果你正在从事 Web 开发或数据爬取项目,Requests 是一个非常不错的选择。希望我的学习过程能为你提供帮助!

转载地址:http://lzluz.baihongyu.com/

你可能感兴趣的文章
nodejs封装http请求
查看>>
nodejs常用组件
查看>>
nodejs开发公众号报错 40164,白名单配置找不到,竟然是这个原因
查看>>
Nodejs异步回调的处理方法总结
查看>>
NodeJS报错 Fatal error: ENOSPC: System limit for number of file watchers reached, watch ‘...path...‘
查看>>
nodejs支持ssi实现include shtml页面
查看>>
Nodejs教程09:实现一个带接口请求的简单服务器
查看>>
nodejs服务端实现post请求
查看>>
nodejs框架,原理,组件,核心,跟npm和vue的关系
查看>>
Nodejs概览: 思维导图、核心技术、应用场景
查看>>
nodejs模块——fs模块
查看>>
Nodejs模块、自定义模块、CommonJs的概念和使用
查看>>
nodejs生成多层目录和生成文件的通用方法
查看>>
nodejs端口被占用原因及解决方案
查看>>
Nodejs简介以及Windows上安装Nodejs
查看>>
nodejs系列之express
查看>>
nodejs系列之Koa2
查看>>
Nodejs连接mysql
查看>>
nodejs连接mysql
查看>>
NodeJs连接Oracle数据库
查看>>