当前位置: 首页 > news >正文

Python Requests 库:从安装到精通

摘要

本文详细介绍 Python Requests 库的安装与使用,通过常见示例让你轻松掌握。

一、引言

在当今的互联网时代,与各种 Web 服务进行交互是非常常见的需求。Python 作为一门功能强大且易于学习的编程语言,提供了许多用于网络请求的库,其中 Requests 库因其简洁易用的 API 而备受开发者青睐。Requests 库允许你发送 HTTP 请求,与 Web 服务器进行数据交互,无论是获取网页内容、提交表单数据还是调用 API 接口,它都能轻松胜任。本文将详细介绍 Requests 库的安装方法以及各种使用场景,帮助你快速掌握并精通这个实用的库。

二、安装 Requests 库

Requests 库并不是 Python 的内置库,因此在使用之前需要先进行安装。以下是几种常见的安装方式:

2.1 使用 pip 安装

pip 是 Python 的包管理工具,大多数 Python 环境都会默认安装。打开终端或命令提示符,执行以下命令即可安装 Requests 库:

pip install requests

如果你使用的是 Python 3,可能需要使用 pip3 命令:

pip3 install requests

安装完成后,你可以通过以下代码验证是否安装成功:

import requests
print(requests.__version__)

如果没有报错并能正常输出版本号,说明 Requests 库已经成功安装。

2.2 使用 Anaconda 安装

如果你使用的是 Anaconda 环境,可以使用 conda 命令来安装 Requests 库:

conda install requests

三、基本使用

3.1 发送 GET 请求

GET 请求是最常见的 HTTP 请求类型,用于从服务器获取资源。以下是一个简单的示例:

import requests# 发送 GET 请求
response = requests.get('https://www.example.com')# 检查响应状态码
if response.status_code == 200:# 打印响应内容print(response.text)
else:print(f"请求失败,状态码:{response.status_code}")

在这个示例中,我们使用 requests.get() 方法发送了一个 GET 请求,并将响应存储在 response 对象中。通过检查 response.status_code 可以判断请求是否成功,response.text 属性可以获取响应的文本内容。

3.2 发送带参数的 GET 请求

有时候,我们需要在 GET 请求中传递参数。可以通过 params 参数来实现:

import requests# 定义参数
params = {'key1': 'value1','key2': 'value2'
}# 发送带参数的 GET 请求
response = requests.get('https://www.example.com/api', params=params)# 打印请求的 URL
print(response.url)

在这个示例中,params 是一个字典,包含了要传递的参数。requests.get() 方法会自动将这些参数添加到 URL 中。

3.3 发送 POST 请求

POST 请求通常用于向服务器提交数据。以下是一个发送 POST 请求的示例:

import requests# 定义要提交的数据
data = {'username': 'john_doe','password': '123456'
}# 发送 POST 请求
response = requests.post('https://www.example.com/login', data=data)# 打印响应内容
print(response.text)

在这个示例中,我们使用 requests.post() 方法发送了一个 POST 请求,并通过 data 参数传递了要提交的数据。

3.4 发送 JSON 数据

如果需要发送 JSON 数据,可以使用 json 参数:

import requests
import json# 定义 JSON 数据
data = {'name': 'Alice','age': 25
}# 发送包含 JSON 数据的 POST 请求
response = requests.post('https://www.example.com/api', json=data)# 打印响应内容
print(response.text)

在这个示例中,requests.post() 方法会自动将字典转换为 JSON 格式,并设置 Content-Typeapplication/json

四、处理响应

4.1 获取响应状态码

响应状态码表示请求的结果。常见的状态码有 200 表示成功,404 表示未找到资源,500 表示服务器内部错误等。可以通过 response.status_code 属性获取响应状态码:

import requestsresponse = requests.get('https://www.example.com')
print(response.status_code)

4.2 获取响应头

响应头包含了关于响应的一些元信息,如服务器类型、内容类型等。可以通过 response.headers 属性获取响应头:

import requestsresponse = requests.get('https://www.example.com')
print(response.headers)

4.3 获取响应内容

除了使用 response.text 获取文本内容外,还可以使用 response.json() 方法将响应内容解析为 JSON 格式:

import requestsresponse = requests.get('https://www.example.com/api/data')
if response.status_code == 200:data = response.json()print(data)

五、高级用法

5.1 会话管理

requests.Session() 可以创建一个会话对象,用于在多个请求之间保持会话状态,如 Cookie 等:

import requests# 创建会话对象
session = requests.Session()# 发送登录请求
login_data = {'username': 'john_doe','password': '123456'
}
session.post('https://www.example.com/login', data=login_data)# 发送需要登录才能访问的请求
response = session.get('https://www.example.com/dashboard')
print(response.text)

在这个示例中,使用 session 对象发送的请求会自动携带之前登录时获取的 Cookie。

5.2 超时设置

为了避免请求长时间无响应,可以设置超时时间:

import requeststry:response = requests.get('https://www.example.com', timeout=5)print(response.text)
except requests.Timeout:print("请求超时")

在这个示例中,timeout=5 表示如果请求在 5 秒内没有得到响应,就会抛出 requests.Timeout 异常。

5.3 代理设置

如果需要使用代理服务器发送请求,可以通过 proxies 参数设置代理:

import requestsproxies = {'http': 'http://proxy.example.com:8080','https': 'http://proxy.example.com:8080'
}response = requests.get('https://www.example.com', proxies=proxies)
print(response.text)

六、总结

Requests 库是 Python 中一个非常实用的 HTTP 请求库,它提供了简洁易用的 API,使得与 Web 服务器进行交互变得轻而易举。通过本文的介绍,你已经了解了 Requests 库的安装方法以及各种常见的使用场景,包括发送 GET、POST 请求,处理响应,以及一些高级用法。希望你能在实际项目中灵活运用这些知识,提高开发效率。

相关文章:

  • 【人工智能】Agent智能体关键技术分析
  • 基于SpringBoot的网上找律师管理系统
  • 支持中文对齐的命令行表格打印python库——tableprint
  • 什么是 Stream
  • 代码随想录背包问题完结
  • Linux | 软件仓库管理
  • Python爬虫实战:获取网易新闻数据
  • Python语法系列博客 · 第5期[特殊字符] 模块与包的导入:构建更大的程序结构
  • CCLinkIE转EtherCAT边缘计算网关构建智能产线:跨协议设备动态组网与数据优化传输
  • 微前端框架Module Federation
  • 专题十六:虚拟路由冗余协议——VRRP
  • Linux教程-常用命令系列二
  • dns作业
  • 健康养生之道
  • Javaweb之javascript的详细解析
  • 大模型时代:机遇与风险并存的AI革命
  • 苍穹外卖项目中所涉及到的测试内容
  • 直线轴承常规分类知多少?
  • 破解保险箱
  • 数据结构学习笔记 :排序算法详解与C语言实现
  • 北理工:开除宫某党籍,免去行政职务,解除聘用关系
  • 瑞安房地产王颖:房地产市场看到很好的信号,上海项目销售压力不大
  • 行拘!如此引流诱导违法犯罪不该被纵容
  • 皓元医药郑保富:共创、共赢、共享,跨域协作推动生物医药创新
  • 辽宁一季度GDP为7606.9亿元,同比增长5.2%
  • 助力外贸拓内销,上海16家电商平台与近80家外贸企业现场对接