Python requests模块 快速入门 这篇就够了

目录

一、Requests概述

二、安装Requests

三、Get请求

3.1 Get请求示例

3.2 Get请求爬取二进制数据

四、Post请求

4.1 Post请求示例

4.2 发送JSON数据

五、验证Cookies

六、会话请求


一、Requests概述

Requests是一个流行的Python第三方库,它专为HTTP通信而设计,旨在使网络请求更加简单和人性化。以下是关于Requests的概述:

  1. 简单易用:Requests提供了简洁明了的API,使得发送HTTP请求变得非常直观。与Python标准库中的urllib相比,Requests的语法更加简洁,易于学习和使用。
  2. 功能全面:Requests支持HTTP的所有主要方法,如GET、POST、PUT、DELETE等。它还支持设置请求头、请求体、超时时间、代理等。此外,Requests还支持会话保持、文件上传、自动内容解码和JSON解析等功能。
  3. 自动化处理:Requests库内部处理了许多底层的细节,如连接池管理、Keep-alive连接、URL编码等,使得开发者可以专注于业务逻辑而无需关心底层的HTTP通信细节。
  4. 良好的文档和社区支持:Requests拥有详尽的官方文档和活跃的社区,这意味着开发者可以轻松地找到问题的答案或获得帮助。
  5. 兼容性:Requests库在Python 2和Python 3中都可以使用,并且与许多其他Python库和框架兼容。
  6. 安全:Requests在处理HTTPS请求时提供了SSL验证和证书管理功能,确保通信的安全性。

二、安装Requests

确保你已经安装了Requests库。如果还没有安装,可以使用pip进行安装

pip install requests

三、Get请求

3.1 Get请求示例

这个示例中,我们定义了请求的URL、查询参数和请求头。然后,我们使用requests.get()方法发送GET请求,并获取响应对象。接着,我们检查响应的状态码以确保请求成功,并输出请求的URL、状态码和响应内容。如果服务器返回的是JS ON数据,我们还尝试解析它并打印出来。

请注意,你需要将urlparamsheaders替换为你实际要发送请求的目标URL、查询参数和请求头信息。此外,处理响应时,你可能需要根据实际情况调整代码,以正确处理服务器返回的数据。 

示例:

import requests

# 定义请求的URL
url = 'https://www.baidu.com'

# 定义查询参数
params = {
    'key1': 'shenghao',
    'key2': 'haozi'
}

# 定义请求头
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}

# 发送GET请求
response = requests.get(url, params=params, headers=headers)

# 检查请求是否成功
if response.status_code == 200:
    # 输出请求URL
    print('请求URL:', response.url)

    # 输出响应状态码
    print('状态码:', response.status_code)

    # 输出响应内容(文本格式)
    print('文本响应内容:', response.text)

    # 如果你知道服务器返回的是JSON数据,可以解析它
    try:
        data = response.json()
        print('JSON响应内容:', data)
    except ValueError:
        print('响应内容不是有效的JSON格式')

else:
    # 如果请求失败,打印错误信息
    print('请求失败,状态码:', response.status_code)
    print('错误信息:', response.reason)

# 你还可以获取其他响应信息,如编码方式和内容长度
print('响应编码:', response.encoding)
print('内容长度:', len(response.content))

3.2 Get请求爬取二进制数据

使用 Requests 库从 URL 下载二进制数据(例如,一个图片文件)

示例:

import requests

# 图片文件的URL
url = 'https://www.baidu.com/img/bd_logo1.png'

# 发送GET请求,获取二进制响应内容
response = requests.get(url, stream=True)

# 检查请求是否成功
if response.status_code == 200:
    # 以二进制格式打开本地文件用于写入
    with open('image.jpg', 'wb') as file:
        # 使用iter_content方法按块读取响应内容,减少内存使用
        for chunk in response.iter_content(chunk_size=8192):
            if chunk:  # 过滤掉空块
                file.write(chunk)
    print('图片下载成功!')
else:
    print('请求失败,状态码:', response.status_code)

四、Post请求

4.1 Post请求示例

示例:

import requests

# 定义请求的URL
url = 'https://httpbin.org/post'

# 定义要提交的表单数据
form_data = {
    'username': 'shenghao',
    'password': 'haozi'
}

# 设置请求头,通常不需要特别设置,但有时候可能需要
headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
}

# 发送POST请求
response = requests.post(url, data=form_data, headers=headers)

# 检查请求是否成功
if response.status_code == 200:
    # 输出响应内容
    print('请求成功!')
    print('响应内容:', response.text)
else:
    # 如果请求失败,打印错误信息
    print('请求失败,状态码:', response.status_code)
    print('错误信息:', response.reason)
    # 还可以打印出服务器返回的错误信息,如果有的话
    if response.text:
        print('服务器返回的错误信息:', response.text)

4.2 发送JSON数据

通过POST请求发送JSON数据,你需要设置Content-Type头为application/json,并将数据编码为JSON格式

示例:

import requests
import json

# 定义请求的URL
url = 'https://httpbin.org/post'

# 定义要提交的JSON数据
json_data = {
    'username': 'shenghao',
    'password': 'haozi'
}

# 将Python字典转换为JSON字符串
json_string = json.dumps(json_data)

# 设置请求头
headers = {
    'Content-Type': 'application/json'
}

# 发送POST请求
response = requests.post(url, data=json_string, headers=headers)

# 检查请求是否成功
if response.status_code == 200:
    # 输出响应内容
    print('请求成功!')
    print('响应内容:', response.json())  # 假设服务器返回的是JSON格式的数据
else:
    # 如果请求失败,打印错误信息
    print('请求失败,状态码:', response.status_code)
    print('错误信息:', response.reason)
    # 还可以打印出服务器返回的错误信息,如果有的话
    if response.text:
        print('服务器返回的错误信息:', response.text)

五、验证Cookies

使用cookies进行登录验证通常涉及以下步骤:

  1. 通过用户名和密码发送登录请求到服务器。
  2. 服务器验证用户名和密码,如果验证成功,会设置一个或多个cookies,并将其发送给客户端。
  3. 客户端在接下来的请求中携带这些cookies,以证明用户的登录状态。

示例:

import requests

# 登录URL
login_url = 'https://httpbin.org/post'
# 目标URL(需要登录后才能访问)
target_url = 'https://example.com/protected-resource'

# 登录时所需的数据
login_data = {
    'username': 'shenghao',
    'password': 'haozi'
}

# 第一步:发送登录请求
login_response = requests.post(login_url, data=login_data)

# 假设登录成功,服务器会设置cookies
# 我们从登录响应中获取这些cookies
if login_response.status_code == 200:
    # 获取cookies
    cookies = login_response.cookies.get_dict()

    # 第二步:使用获取到的cookies发送请求到目标URL
    target_response = requests.get(target_url, cookies=cookies)

    # 打印目标URL的响应内容
    print(target_response.text)
else:
    print("登录失败,状态码:", login_response.status_code)

六、会话请求

Session对象提供了一种方式来跨多个请求保持某些参数和cookies。当你需要向同一网站发送多个请求,并且这些请求之间需要共享某些状态(比如cookies或认证信息)时,使用Session是非常有用的。

示例:

import requests

# 创建一个Session对象
s = requests.Session()

# 使用Session对象发送第一个请求(例如登录)
login_url = 'https://httpbin.org/post'
login_data = {'username': 'shenghao', 'password': 'haozi'}
login_response = s.post(login_url, data=login_data)

# 检查登录是否成功
if login_response.status_code == 200:
    print('登录成功!')
else:
    print('登录失败,状态码:', login_response.status_code)

# 发送第二个请求(需要身份验证的资源)
protected_url = 'https://httpbin.org/get'
protected_response = s.get(protected_url)

# 由于Session对象自动处理cookies,所以不需要手动设置cookies
# 检查受保护资源的请求是否成功
if protected_response.status_code == 200:
    print('访问受保护资源成功!')
    print('响应内容:', protected_response.text)
else:
    print('访问受保护资源失败,状态码:', protected_response.status_code)

# 关闭Session(可选,因为Session对象会在Python对象被垃圾回收时自动关闭)
s.close()

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值