当前位置:首页 > 编程开发 > Python > 正文内容

python requests库使用详细教程

Codefans1年前 (2023-04-20)Python637

Python 中的 requests 库是一个简单易用的 HTTP 请求库,支持多种请求方法、多种参数设置、并且使用广泛。本文将详细介绍如何使用 requests 库发送 HTTP 请求。


安装

使用 pip 命令进行安装:

pip install requests

导入

在编写 Python 代码时,需要首先导入 requests 库:

import requests

发送 GET 请求

GET 是最常见的请求方法之一,它用于从指定的 URL 获取资源。使用 requests.get() 方法可以发送 HTTP GET 请求。

import requests
response = requests.get('https://www.baidu.com')
print(response.text)

上面的代码向百度首页发送 HTTP GET 请求,并获取到了返回的 HTML 页面的内容。


参数传递

有时需要在 HTTP GET 请求中传递一些参数,以获取指定的资源或执行特殊的操作。因此,在调用 requests.get() 方法时,可以通过 params 参数传递参数。该参数应该是一个字典对象,其中键表示参数名,值表示参数值。

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

上面的代码向 httplib 的 API 查询字符串中添加了两个参数,将其转换为 URL 的查询部分。


发送 POST 请求

POST 是发送数据最常见的请求方法之一。requests.post() 方法用于发送 HTTP POST 请求。

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

上面的代码向 httplib 的 API 发送了一个包含两个键值对数据的 HTTP POST 请求,该请求被接收,并返回了 JSON 格式的响应。


更进一步的编码

有时候,需要向HTTP POST 请求发送编码为 application/x-www-form-urlencoded 的表单数据。这时,我们可以将参数作为一个字典对象传递给 data 参数,并设置 Content-Type 为 application/x-www-form-urlencoded。

import requests
payload = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('https://httpbin.org/post', data=payload, headers={'Content-Type': 'application/x-www-form-urlencoded'})
print(response.text)

发送 JSON 数据

HTTP 协议是基于文本的协议,通常用于发送 HTML 格式的文本、表单数据等。但是,在现代 Web 开发中,JSON 数据被广泛使用,并且成为了 Web API 的标准数据格式。因此, request 库支持使用 JSON 格式发送数据。

import requests
import json
payload = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('https://httpbin.org/post', json=payload)
print(json.loads(response.text))

上面的代码向 httplib 的 API 发送了一个包含两个键值对数据的 HTTP POST 请求,并使用 JSON 格式进行编码。服务器接收到请求后,将 JSON 数据解码,并返回一个 JSON 格式的响应。


发送 PUT 请求

HTTP PUT 请求用于向指定 URL 更新资源。requests.put() 方法用于发送 HTTP PUT 请求。

import requests
payload = {'key1': 'value1', 'key2': 'value2'}
response = requests.put('https://httpbin.org/put', data=payload)
print(response.text)

上面的代码向 httplib 的 API 发送了一个包含两个键值对数据的 HTTP PUT 请求,该请求被接受,并将其转发到相应的服务器。


发送二进制数据

如果你需要向服务器发送一些二进制数据,比如图片或音频等,可以使用 requests.put() 方法向指定 URL 上传二进制数据。


以下是一个示例:

import requests
url = 'https://httpbin.org/put'
data = open('file.bin', 'rb').read()
response = requests.put(url, data=data)
print(response.text)

上面的代码将名为 file.bin 的文件作为二进制数据发送,并将其上传到指定 URL 上。


发送 DELETE 请求

DELETE 请求用于向服务器删除指定资源。requests.delete() 方法用于发送 HTTP DELETE 请求。

import requests
response = requests.delete('https://httpbin.org/delete')
print(response.text)

上面的代码向 httplib 的 API 发送一个 HTTP DELETE 请求,该请求被接受,并将其转发到相应的服务器。


请求头

HTTP 请求头包含请求信息,如浏览器类型、请求方法、源站信息、缓存信息等。 requests 库允许用户更改默认请求头。

import requests
url = 'https://httpbin.org/get'
headers = {'user-agent': 'my-app/0.0.1'}
response = requests.get(url, headers=headers)
print(response.text)

上面的代码向 httplib 的 API 发送一个 HTTP GET 请求,并更改了默认请求头中的 User-Agent 字段。


响应

当服务器响应 HTTP 请求时,它会返回数据和一些元数据。requests 库提供了简单且易于使用的 API 来访问响应内容以及元数据。


响应内容

响应内容是 Python 字符串类型。可以通过该字符串来访问服务器返回的文本内容。

import requests
response = requests.get('https://www.baidu.com')
print(response.text)

上面的代码从百度首页获取 HTML 页面的内容,并将其打印出来。


响应状态码

HTTP 响应状态码表明请求是否成功,在许多情况下,状态码为 200 表示请求成功。

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

上面的代码从百度首页获取 HTML 页面,并检查其响应状态码。


响应头

HTTP 响应头提供关于响应元数据的信息。可以使用 response.headers 属性访问 HTTP 响应头。

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

上面的代码从百度首页获取 HTML 页面,并输出其 HTTP 响应头。


原始响应内容

HTTP 响应的原始内容也可以使用 response.content 属性访问,返回经过解码的字节字符串。

import requests
response = requests.get('https://www.baidu.com', stream=True)
print(response.content)

上面的代码从百度首页获取 HTML 页面的原始内容,并将其打印出来。


异常处理

在发送 HTTP 请求时,可能会出现一些异常,如网络连接错误、请求超时等。要避免程序因此而崩溃,需要对这些异常进行处理。

import requests
try:
    response = requests.get('http://httpbin.org/get', timeout=0.1)
    response.raise_for_status()
except requests.exceptions.RequestException as e:
    print(e)

上面的代码向 httplib 的 API 发送一个 HTTP GET 请求,并设置请求超时为 0.1 秒。如果请求失败或超时,将引发 requests.exceptions.RequestException 异常。


高级用法

在请求中传递 Cookies


有时候发送 HTTP 请求时需要通过 Cookies 进行身份验证。requests 库支持从字典对象中设置 Cookies。以下是一个示例:

import requests
cookies = {'name': 'value'}
response = requests.get('https://httpbin.org/cookies', cookies=cookies)
print(response.text)

上面的代码向 httplib 的 API 发送一个 HTTP GET 请求,并传递了一个 Cookies 对象。


会话对象

有时候,当需要向同一个主机发送多次请求时,可以使用 requests.Session() 方法创建一个会话对象。

import requests
session = requests.Session()
payload = {'key1': 'value1', 'key2': 'value2'}
response = session.post('https://httpbin.org/post', data=payload)
print(response.text)

上面的代码向 httplib 的 API 发送了两个 HTTP POST 请求,并在第二个请求中添加了 Cookie。默认情况下, requests 库使用不同的连接来处理每个HTTP请求,但是,使用会话对象可以重用与同一主机的所有请求之间的连接,从而提高性能。


SSL 证书验证

requests 库默认情况下验证 SSL 证书。如果需要禁用证书验证,可以将 verify 参数设置为 False。

import requests
response = requests.get('https://httpbin.org/', verify=False)
print(response.text)

上面的代码向 httplib 的 API 发送了一个 HTTP GET 请求,并禁用了 SSL 证书验证。


结论

通过使用 requests 库,可以轻松地发送 HTTP 请求,并获取服务器的响应。此外,还可以对请求参数、请求头、响应内容、状态码等进行控制和检查。


扫描二维码推送至手机访问。

版权声明:本文由图慧网发布,如需转载请注明出处。

本文链接:http://www.tuh8.com/?id=64

分享给朋友:

“python requests库使用详细教程” 的相关文章

dataframe踩坑笔记(2):表格合并、拼接

dataframe踩坑笔记(2):表格合并、拼接

1. 表格简单合并1.1按行合并(上下合并):import numpy as np df1= pd.DataFrame(np.random.randn(4),columns=["a"])   df2= pd...

pandas 利用to_excel一次生成多个sheet到一个文件中

在 Pandas 的 to_excel 方法中,可以通过传递参数 sheet_name 来指定生成的 Excel 中的工作表的名称。如果需要生成多个工作表,可以在 sheet_name 中传递一个列表,其中的每个元素即为每个工作表的名称。例如,以下代码生成了一个包含两个工作表的 Excel 文件:i...

Python中 pandas 数据处理常用函数与方法的详细介绍

数据读取和写入pandas.read_csv(filepath_or_buffer, sep=',', header='infer', names=None): 从 csv 文件中读取数据,返回一个 DataFrame 对象。其中 filepath_or_buffer...

python BeautifulSoup4(bs4)使用教程

Python 中的 BeautifulSoup4(通常简称为 bs4)是一个流行的 HTML 解析器,是从 HTML 或 XML 文件中提取数据(或屏蔽 HTML/XML 标记)的一种库。在本文中,我将介绍如何安装、导入和使用 bs4 库。安装要安装 bs4,可以使用 pip 命令:pip ...

Python pandas库159个常用方法使用说明

Pandas库专为数据分析而设计,它是使Python成为强大而高效的数据分析环境的重要因素。一、Pandas数据结构1、import pandas as pdimport numpy as npimport matplotlib.pyplot as plt2、S1=pd.Series([‘a’,’b...