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

requests项目实战:新手入门教程

标签:
Python 爬虫
概述

本文详细介绍了如何使用Python的requests库进行HTTP请求,涵盖了GET和POST请求的发送方法以及如何处理响应。通过实际的代码示例,读者可以学习到如何在项目中应用requests库,完成从基本请求到复杂数据处理的全过程。文中还提供了关于会话管理和错误处理的实用技巧,帮助读者更好地理解和掌握requests项目实战。

引入requests库
requests库简介

requests库是Python中最常用的HTTP客户端库之一,它简单易用,提供了简单易懂的API来发送HTTP请求,支持多种请求方法,包括GET、POST、PUT、DELETE等。它在处理HTTP请求时提供了丰富的功能,如处理Cookies、会话管理、设置请求头、超时处理等。

安装requests库的方法

要使用requests库,首先需要安装它。你可以通过pip工具来安装requests库。在命令行或终端中输入以下命令:

pip install requests

这将安装requests库及其依赖项。

如何在Python项目中导入requests库

在Python脚本或模块中使用requests库,需要先导入requests库。你可以使用以下命令导入requests库:

import requests

这样便可以在Python程序中使用requests库提供的所有功能。

发送GET请求
GET请求的基本概念

GET请求是一种HTTP请求方法,用于从服务器获取资源。GET请求通常用于从服务器获取数据,例如网页内容或API数据。GET请求将参数添加到URL的查询字符串中,因此可以保存在书签或历史记录中。

使用requests库发送GET请求的步骤

使用requests库发送GET请求的步骤如下:

  1. 导入requests库。
  2. 使用requests.get()函数发送GET请求。
  3. 获取响应对象。
  4. 解析响应内容。

具体示例如下:

import requests

response = requests.get('https://api.github.com')
print(response.status_code)
print(response.headers)
print(response.text)

上述代码将从GitHub API获取数据,并打印响应的状态码、头部信息以及响应内容。

实例:获取网页内容

下面是一个获取网页内容的示例。我们将获取Python中文社区的首页内容。

import requests

url = 'https://www.python.org/'
response = requests.get(url)

if response.status_code == 200:
    print(response.text)
else:
    print('请求失败,状态码:', response.status_code)

上述代码将向Python社区首页发送GET请求,并打印网页内容。如果请求失败,将打印错误状态码。

实例:查看HTTP响应状态码

下面是一个查看HTTP响应状态码的示例。

import requests

response = requests.get('https://httpbin.org/status/200')
print(response.status_code)

上述代码将向https://httpbin.org/status/200发送GET请求,并打印响应的状态码。

实例:获取响应内容和编码

下面是一个获取响应内容和编码的示例。

import requests

response = requests.get('https://httpbin.org/html')
print(response.text)
print(response.encoding)

上述代码将向https://httpbin.org/html发送GET请求,并打印响应的内容及其编码。

发送POST请求
POST请求的基本概念

POST请求也是一种HTTP请求方法,用于向服务器发送数据。与GET请求不同,POST请求将数据放在请求体中,而不是URL的查询字符串中。POST请求通常用于提交数据,例如表单提交或API数据传输。

使用requests库发送POST请求的步骤

使用requests库发送POST请求的步骤如下:

  1. 导入requests库。
  2. 使用requests.post()函数发送POST请求。
  3. 获取响应对象。
  4. 解析响应内容。

具体示例如下:

import requests

response = requests.post('https://httpbin.org/post', data={'key': 'value'})
print(response.status_code)
print(response.text)

上述代码将向https://httpbin.org/post发送POST请求,并打印响应的状态码和响应内容。

实例:发送表单数据

下面是一个发送表单数据的示例。我们将向一个模拟的API发送POST请求并接收响应。

import requests

url = 'https://httpbin.org/post'
data = {'name': '张三', 'age': '25'}
response = requests.post(url, data=data)

print(response.status_code)
print(response.text)

上述代码将向https://httpbin.org/post发送POST请求,其中包含一个字典类型的表单数据。响应内容将打印在控制台上。

实例:查看HTTP响应状态码

下面是一个查看HTTP响应状态码的示例。

import requests

response = requests.post('https://httpbin.org/post', data={'key': 'value'})
print(response.status_code)

上述代码将向https://httpbin.org/post发送POST请求,并打印响应的状态码。

实例:获取响应内容和编码

下面是一个获取响应内容和编码的示例。

import requests

response = requests.post('https://httpbin.org/post', data={'key': 'value'})
print(response.text)
print(response.encoding)

上述代码将向https://httpbin.org/post发送POST请求,并打印响应的内容及其编码。

处理HTTP响应
查看HTTP响应状态码

HTTP响应状态码是服务器响应的代码,它告诉客户端请求是否成功。常见的状态码有:

  • 200:请求成功。
  • 404:请求的资源不存在。
  • 500:服务器内部错误。

你可以使用response.status_code属性来获取HTTP响应的状态码。

import requests

response = requests.get('https://httpbin.org/status/200')
print(response.status_code)

上述代码将向https://httpbin.org/status/200发送GET请求,并打印响应的状态码。

获取响应内容和编码

HTTP响应的内容可以通过response.text属性获取,它返回的是响应的内容,通常为字符串。响应内容的编码可以通过response.encoding属性获取和设置。

import requests

response = requests.get('https://httpbin.org/html')
print(response.text)
print(response.encoding)

上述代码将向https://httpbin.org/html发送GET请求,并打印响应的内容及其编码。

解析JSON响应

当请求返回JSON格式的数据时,可以使用response.json()方法解析JSON响应。这个方法会将JSON字符串解析为Python字典或列表。

import requests

response = requests.get('https://api.github.com/events')
json_data = response.json()
print(json_data)

上述代码将向GitHub的API发送GET请求,并打印解析后的JSON数据。

使用Session对象
Session对象的作用

Session对象用于管理会话,它可以保持请求之间的状态,例如Cookie和认证信息。使用Session对象可以在多个请求之间共享数据,使得处理需要身份验证或状态维护的请求更加简单。

创建和使用Session对象

创建Session对象非常简单,只需要实例化一个requests.Session()对象。然后,你可以使用这个对象来发送HTTP请求,就像使用普通的requests对象一样。

import requests

session = requests.Session()

response = session.get('https://httpbin.org/get')
print(response.status_code)
print(response.text)

response = session.post('https://httpbin.org/post', data={'key': 'value'})
print(response.status_code)
print(response.text)

上述代码将创建一个Session对象,并使用它发送GET和POST请求。

实例:模拟登录网站

下面是一个模拟登录网站的示例。我们将模拟登录一个需要身份验证的网站,并保持登录状态。

import requests

login_url = 'https://httpbin.org/post'
data = {'username': 'admin', 'password': 'admin123'}

session = requests.Session()
login_response = session.post(login_url, data=data)

profile_url = 'https://httpbin.org/get'
profile_response = session.get(profile_url)

print(profile_response.status_code)
print(profile_response.text)

上述代码将使用一个Session对象模拟登录一个网站,并获取登录后的个人资料页面。登录数据将通过POST请求发送,并使用同一个Session对象来获取需要身份验证的页面。

实例:创建和使用Session对象

下面是一个创建Session对象并使用它发送HTTP请求的完整示例。

import requests

session = requests.Session()
response = session.get('https://httpbin.org/get')
print(response.status_code)
print(response.text)

response = session.post('https://httpbin.org/post', data={'key': 'value'})
print(response.status_code)
print(response.text)

上述代码将创建一个Session对象,并使用它发送GET和POST请求。

错误处理和调试
常见的错误及其解决方法

使用requests库时,可能会遇到一些常见的错误,例如:

  • requests.exceptions.RequestException:表示请求出现错误。
  • requests.exceptions.Timeout:表示请求超时。
  • requests.exceptions.HTTPError:表示HTTP响应状态码在400或500范围内。

这些错误可以通过捕获异常来处理。

使用try-except语句调试代码

通过使用try-except语句可以捕获和处理异常。例如,下面的代码将捕获requests.exceptions.HTTPError异常,并在异常发生时打印错误信息。

import requests

url = 'https://httpbin.org/status/404'
try:
    response = requests.get(url)
    response.raise_for_status()  # 如果响应状态码不是200,则抛出异常
except requests.exceptions.HTTPError as e:
    print('HTTP错误:', e)

上述代码尝试获取一个返回404状态码的URL,并在发生HTTP错误时捕获并处理异常。

实例:捕获并处理异常

下面是一个捕获并处理异常的示例。我们将尝试获取一个不存在的URL,并捕获可能出现的异常。

import requests

url = 'https://httpbin.org/status/404'
try:
    response = requests.get(url)
    response.raise_for_status()  # 如果响应状态码不是200,则抛出异常
except requests.exceptions.HTTPError as e:
    print('HTTP错误:', e)
except requests.exceptions.Timeout as e:
    print('请求超时:', e)
except requests.exceptions.RequestException as e:
    print('请求异常:', e)

上述代码将尝试获取一个不存在的URL,并捕获可能的HTTP错误、超时错误和其他请求异常。如果捕获到异常,将打印错误信息。

点击查看更多内容
TA 点赞

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

评论

作者其他优质文章

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

100积分直接送

付费专栏免费学

大额优惠券免费领

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

举报

0/150
提交
取消