编程 Requests库详细介绍

2024-11-18 05:53:37 +0800 CST views 788

Requests库详细介绍

安装

使用pip安装requests库:

pip install requests

基本用法

requests库提供了简洁的API来处理HTTP请求。以下是使用requests库进行不同HTTP请求的示例:

import requests

# 发送GET请求
r = requests.get('https://api.github.com/events')

# 发送POST请求
r = requests.post('https://httpbin.org/post', data={'key': 'value'})

# 发送PUT请求
r = requests.put('https://httpbin.org/put', data={'key': 'value'})

# 发送DELETE请求
r = requests.delete('https://httpbin.org/delete')

# 发送HEAD请求
r = requests.head('https://httpbin.org/get')

# 发送OPTIONS请求
r = requests.options('https://httpbin.org/get')

在URL中传递参数

可以通过params参数将查询参数附加到URL中:

payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get('https://httpbin.org/get', params=payload)

# 输出拼接后的URL
print(r.url)
# https://httpbin.org/get?key1=value1&key2=value2

响应内容

获取服务响应内容:

import requests

r = requests.get('https://api.github.com/events')
print(r.text)  # 输出响应内容(JSON格式)

可以更改响应的编码:

r.encoding = 'ISO-8859-1'

二进制响应内容

如果响应内容是二进制数据,可以使用r.content获取:

r.content  # 返回二进制内容

JSON响应内容

直接将响应解析为JSON:

import requests

r = requests.get('https://api.github.com/events')
r.json()  # 返回JSON格式的Python对象

自定义请求头

可以通过headers参数设置自定义请求头:

url = 'https://api.github.com/some/endpoint'
headers = {'user-agent': 'my-app/0.0.1'}

r = requests.get(url, headers=headers)

POST请求传递表单数据

使用data参数传递表单数据:

payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.post('https://httpbin.org/post', data=payload)

传递文件

上传文件:

url = 'https://httpbin.org/post'
files = {'file': open('report.xls', 'rb')}

r = requests.post(url, files=files)

响应状态代码

可以通过r.status_code获取HTTP状态码:

r = requests.get('https://httpbin.org/get')
print(r.status_code)  # 返回状态码,如200

处理Cookies

访问响应中的Cookies:

url = 'http://example.com/some/cookie/setting/url'
r = requests.get(url)

r.cookies['example_cookie_name']

可以通过cookies参数向服务器发送自定义Cookies:

url = 'https://httpbin.org/cookies'
cookies = {'cookies_are': 'working'}

r = requests.get(url, cookies=cookies)
print(r.text)

超时

可以通过timeout参数设置请求超时时间:

requests.get('https://github.com/', timeout=0.001)

Session对象

Session对象允许在多个请求之间持久化参数(如Cookie),并提高性能。

s = requests.Session()
s.get('https://httpbin.org/cookies/set/sessioncookie/123456789')
r = s.get('https://httpbin.org/cookies')

print(r.text)  # 显示会话中的Cookies

代理

使用代理发送请求:

proxies = {
    'http': 'http://10.10.1.10:3128',
    'https': 'http://10.10.1.10:1080',
}

r = requests.get('http://example.org', proxies=proxies)

可以为整个会话配置代理:

s = requests.Session()
s.proxies.update(proxies)
s.get('http://example.org')

流式请求

对于大文件或流式API,可以使用stream=True参数推迟下载响应内容:

r = requests.get('https://httpbin.org/stream/20', stream=True)
for line in r.iter_lines():
    if line:
        print(line)

SSL证书验证

默认情况下,requests会验证HTTPS请求的SSL证书。如果需要忽略SSL证书,可以设置verify=False

requests.get('https://kennethreitz.org', verify=False)

或者使用自定义的证书文件:

requests.get('https://github.com', verify='/path/to/certfile')

总结

requests库提供了一个简单易用的接口来处理HTTP请求。它的功能涵盖了基本的HTTP请求、文件上传、Cookie处理、SSL证书验证等多种场景,是Python开发中必备的工具之一。

复制全文 生成海报 编程 网络 Python库

推荐文章

阿里云免sdk发送短信代码
2025-01-01 12:22:14 +0800 CST
File 和 Blob 的区别
2024-11-18 23:11:46 +0800 CST
rangeSlider进度条滑块
2024-11-19 06:49:50 +0800 CST
JavaScript数组 splice
2024-11-18 20:46:19 +0800 CST
2025,重新认识 HTML!
2025-02-07 14:40:00 +0800 CST
Vue 3 是如何实现更好的性能的?
2024-11-19 09:06:25 +0800 CST
在Vue3中实现代码分割和懒加载
2024-11-17 06:18:00 +0800 CST
Vue3如何执行响应式数据绑定?
2024-11-18 12:31:22 +0800 CST
开发外贸客户的推荐网站
2024-11-17 04:44:05 +0800 CST
解决python “No module named pip”
2024-11-18 11:49:18 +0800 CST
Vue3 vue-office 插件实现 Word 预览
2024-11-19 02:19:34 +0800 CST
SQL常用优化的技巧
2024-11-18 15:56:06 +0800 CST
前端如何优化资源加载
2024-11-18 13:35:45 +0800 CST
JavaScript 的模板字符串
2024-11-18 22:44:09 +0800 CST
Vue3中的v-for指令有什么新特性?
2024-11-18 12:34:09 +0800 CST
go错误处理
2024-11-18 18:17:38 +0800 CST
Go 如何做好缓存
2024-11-18 13:33:37 +0800 CST
虚拟DOM渲染器的内部机制
2024-11-19 06:49:23 +0800 CST
Vue3的虚拟DOM是如何提高性能的?
2024-11-18 22:12:20 +0800 CST
程序员茄子在线接单