为了账号安全,请及时绑定邮箱和手机立即绑定

requests教程:新手入门详解

标签:
Python 爬虫 API
概述

本文提供了详细的requests教程,涵盖了从安装到基本使用的各个方面。内容包括发送GET和POST请求、处理响应数据、添加查询参数和请求头,以及简单的异常处理。通过示例代码,读者可以快速掌握如何使用requests库进行HTTP请求。requests教程适合初学者快速上手。

requests库简介

requests库的作用和特点

requests库是Python中用于发送HTTP请求的流行库。它拥有易于使用且功能丰富的API,能够简化与HTTP服务器之间的交互。requests库的特点包括:

  • 简洁的API:requests的API设计简洁,使用方便,适合初学者快速上手。
  • 强大的功能:支持所有标准的HTTP请求方法(如GET、POST、PUT、DELETE等)。
  • 灵活的参数:可以通过参数灵活定制请求头、查询参数、请求体等。
  • 响应对象:返回的响应对象可以方便地获取响应数据,并支持JSON、文本等多种格式的解析。
  • 异常处理:内置了异常处理机制,能够捕获并处理常见的HTTP请求异常。

安装requests库的方法

要开始使用requests库,首先需要在Python环境中安装它。可以通过pip工具来完成安装:

pip install requests

安装完成后,可以在Python代码中通过import requests的方式引入requests库。

发送GET请求

GET请求的基本概念

HTTP GET请求是用于向服务器请求资源的数据,通常用于获取数据而不修改服务器状态。GET请求的数据作为查询参数附加在URL中,因此它不适合传输敏感数据,如密码等。

使用requests发送GET请求的示例

以下代码展示了如何使用requests库发送GET请求:

import requests

# 发送GET请求
response = requests.get('https://httpbin.org/get')

# 打印响应状态码
print(f"响应状态码: {response.status_code}")

# 打印响应体
print(f"响应体: {response.text}")

以上代码将向https://httpbin.org/get发送一个GET请求,并打印响应状态码和响应体。https://httpbin.org/get是一个测试服务器,可以返回请求的详细信息,包括请求的URL、请求头、查询参数等。

发送POST请求

POST请求的基本概念

HTTP POST请求用于向服务器发送数据,通常用于提交表单或创建新资源。POST请求的数据通常包含在请求体中,不会显示在URL中,因此可以用于传输敏感数据。

使用requests发送POST请求的示例

以下代码展示了如何使用requests库发送POST请求:

import requests

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

# 打印响应状态码
print(f"响应状态码: {response.status_code}")

# 打印响应体
print(f"响应体: {response.text}")

以上代码将向https://httpbin.org/post发送一个POST请求,请求体中包含一个键值对{'key': 'value'},并打印响应状态码和响应体。

处理响应数据

获取响应状态码和响应体

响应对象通过requests.get()requests.post()方法返回,包含有关请求结果的丰富信息。可以通过属性status_code获取响应状态码,通过text属性获取响应体。

下面是一个示例代码,演示如何获取响应状态码和响应体:

import requests

response = requests.get('https://httpbin.org/get')

# 获取响应状态码
status_code = response.status_code

# 获取响应体
response_body = response.text

print(f"响应状态码: {status_code}")
print(f"响应体: {response_body}")

解析JSON响应

当服务器返回的是JSON格式的数据时,可以直接使用response.json()方法来解析响应体为Python字典。以下是一个示例代码,演示如何解析JSON响应:

import requests

response = requests.get('https://httpbin.org/get')

# 将响应体解析为JSON格式
json_data = response.json()

# 打印解析后的JSON数据
print(f"解析后的JSON数据: {json_data}")

在处理复杂的JSON响应时,可以进一步解析嵌套的数据结构。例如,假设返回的数据结构如下:

{
    "data": {
        "key1": "value1",
        "key2": "value2"
    }
}

可以使用以下代码解析嵌套的数据:

import requests

response = requests.get('https://httpbin.org/get')

# 解析JSON响应
json_data = response.json()

# 解析嵌套数据
nested_data = json_data['data']

print(f"嵌套数据: {nested_data}")

如果解析过程中遇到错误,可以通过异常处理来捕获:

import requests
from requests.exceptions import JSONDecodeError

try:
    response = requests.get('https://httpbin.org/get')
    json_data = response.json()
except JSONDecodeError as e:
    print(f"JSON解析失败: {e}")
else:
    print(f"解析后的JSON数据: {json_data}")
请求参数和请求头的使用

添加查询参数和表单数据

查询参数通常用于GET请求,可以通过params参数传递。表单数据通常用于POST请求,可以通过data参数传递。

以下是一个GET请求中添加查询参数的示例代码:

import requests

params = {'key': 'value'}

response = requests.get('https://httpbin.org/get', params=params)

print(f"响应状态码: {response.status_code}")
print(f"响应体: {response.text}")

以下是一个POST请求中添加表单数据的示例代码:

import requests

data = {'key': 'value'}

response = requests.post('https://httpbin.org/post', data=data)

print(f"响应状态码: {response.status_code}")
print(f"响应体: {response.text}")

设置请求头信息

请求头包含了关于请求的元信息,如内容类型、编码、认证信息等。可以通过headers参数传递请求头信息。例如,设置Content-TypeAuthorization请求头:

import requests

headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer your_token'
}

response = requests.post('https://httpbin.org/post', headers=headers)

print(f"响应状态码: {response.status_code}")
print(f"响应体: {response.text}")
简单的异常处理

捕获和处理常见的requests异常

requests库在发送请求时可能会抛出异常,如连接错误、超时错误等。可以通过try-except语句捕获这些异常并进行处理。

以下是一个捕获和处理异常的示例代码:

import requests
from requests.exceptions import RequestException

try:
    response = requests.get('https://httpbin.org/get')
    response.raise_for_status()
except RequestException as e:
    print(f"请求失败: {e}")
else:
    print(f"响应状态码: {response.status_code}")
    print(f"响应体: {response.text}")

通过异常信息调试问题

当捕获到异常时,异常信息可以帮助定位问题。常见的异常包括:

  • requests.exceptions.ConnectionError:连接错误,例如服务器不可达。
  • requests.exceptions.Timeout:请求超时。
  • requests.exceptions.HTTPError:HTTP错误,如404、500等。

以下是一个捕获并打印异常信息的示例代码:

import requests
from requests.exceptions import RequestException

try:
    response = requests.get('https://httpbin.org/get')
    response.raise_for_status()
except RequestException as e:
    print(f"请求失败: {e}")
else:
    print(f"响应状态码: {response.status_code}")
    print(f"响应体: {response.text}")

以上是关于requests库的基本使用教程,涵盖了发送GET和POST请求、处理响应数据、添加请求参数和请求头、以及捕获和处理异常的示例代码。通过这些示例,可以更好地理解requests库的功能,并在实际项目中应用。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消