Python中requests库的使用

requests库是一个方便的HTTP请求库,它允许我们使用Python发送HTTP/1.1请求。这个库可以用来完成很多网络相关的任务,例如获取HTML内容、发送post和get请求、下载文件等。下面我们将详细介绍如何使用requests库来发送请求。

安装requests库

安装requests库的方法非常简单,只需在命令行输入下面的命令就可以了:

pip install requests

发送GET请求

发送一个最简单的GET请求,只需简单地调用requests库的get()函数:

import requests

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

print(response.text)

上面的代码发送了一个GET请求给百度,并将响应内容打印出来。代码执行结果如下:

<!DOCTYPE html>

<html>

<head>

 <meta http-equiv="Content-Type" content="text/html;charset=utf-8">

 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

 <meta content="always" name="referrer">

 <meta name="theme-color" content="#2932e1">

 <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />

 <link rel="search" type="application/opensearchdescription+xml" href="/content-search.xml" title="百度搜索" />

可以看到,requests库发送请求后返回了HTML页面的内容。

发送POST请求

要发送POST请求,需要调用requests库的post()函数,并将需要POST的数据以字典的方式传递给它:

import requests

data = {'username': 'test', 'password': '123456'}

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

print(response.text)

这个例子向httpbin.org发送了一个POST请求,同时传递了两个数据(username和password),并将响应的内容打印出来。代码执行结果如下:

{

  "args": {}, 

  "data": "", 

  "files": {}, 

  "form": {

    "password": "123456", 

    "username": "test"

  }, 

  "headers": {

    "Accept": "*/*", 

    "Accept-Encoding": "gzip, deflate", 

    "Content-Length": "27", 

    "Content-Type": "application/x-www-form-urlencoded", 

    "Host": "httpbin.org", 

    "User-Agent": "python-requests/2.25.1", 

    "X-Amzn-Trace-Id": "Root=1-61505提取响应内容

使用requests库发送请求后,我们可以通过访问响应对象的属性来获取响应内容。

访问响应对象的属性

响应对象的常用属性如下所示:

- status_code: HTTP请求的返回状态,200表示连接成功,404表示连接失败等等。

- text: HTTP响应内容的字符串形式。

- content: HTTP响应内容的二进制形式。

- json(): 将响应内容解析为JSON形式。

以下是一个例子,它演示了如何使用响应对象的属性:

import requests

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

print('状态码:', response.status_code)

print('响应内容:', response.text)

print('响应内容(二进制):', response.content)

print('响应内容(JSON格式):', response.json())

在使用requests库发送多个请求时,使用Session会更加高效。Session对象会在请求之间自动地保持Cookie,因此我们不需要重复地登录。使用requests.Session()可以创建一个Session对象,而Session对象可以使用get()、options()、post()等方法发送请求。

下面是一个使用Session发送请求的例子:

import requests

s = requests.Session()

# 访问登录页面获取Cookie

s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')

# 访问网站页面,会自动带上Cookie

response = s.get('http://httpbin.org/cookies')

print(response.text)

当我们完成了对一个网站的访问时,要记得关闭Session对象,以便释放资源和关闭与服务器的连接。可以使用session.close()方法来关闭Session对象

import requests

s = requests.Session()

# 访问登录页面获取Cookie

s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')

# 访问网站页面,会自动带上Cookie

response = s.get('http://httpbin.org/cookies')

print(response.text)

s.close() # 关闭Session对象

在本例中,我们创建了一个Session对象,并通过访问登录页面来获取Cookie,然后访问网站页面,并自动带上了Cookie。最后,我们关闭了Session对象。

总结

本文介绍了如何使用Python中的requests库发送HTTP请求,包括发送GET和POST请求、访问响应对象的属性、使用Session等。掌握这些技能可以让我们更加高效和方便地处理网络相关的任务。在实际应用中,我们需要根据具体的业务需求和网站API来使用requests库发送请求。此外,我们也需要注意网络安全问题,例如防止SQL注入和XSS攻击等。

猜你喜欢

转载自blog.csdn.net/2201_75480526/article/details/129321232