Python 3.x 中如何使用requests模块进行HTTP请求

1. 概述

requests模块是Python中常用的HTTP请求库之一,可以方便地向网站发送HTTP请求并获取响应。

使用requests模块可以发送GET、POST、PUT、DELETE等各种类型的HTTP请求,并且可以添加headers、cookies、请求参数等信息。

本文将介绍如何在Python 3.x中使用requests模块进行HTTP请求。

2. 安装requests模块

在使用requests模块之前,需要先安装该模块。可以使用pip来进行安装,打开终端输入以下命令进行安装:

pip install requests

3. 发送GET请求

3.1 最简单的GET请求

发送GET请求的最简单方式是直接调用requests库的get()方法,并传入一个URL。例如,向百度发送一个最简单的GET请求,代码如下:

import requests

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

print(response.text)

这里先使用import关键字导入了requests模块,然后调用get()方法,并将URL传入该方法。get()方法返回一个response对象,可以通过该对象获取服务器响应的各种信息。

代码中使用print语句输出响应的HTML网页内容。

3.2 带参数的GET请求

有些情况下需要向URL中添加参数,可以通过params参数来实现。例如,想要使用百度搜索引擎搜索Python关键词,代码如下:

import requests

params = {'wd': 'Python'}

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

print(response.text)

首先定义了一个params字典,字典中的键为wd,值为Python。然后调用get()方法时,将URL设为https://www.baidu.com/s,同时将params参数设为刚刚定义的params字典。

在上述请求中,请求的URL为https://www.baidu.com/s?wd=Python,其中?为URL的参数分隔符,wd为参数名,Python为参数值。

3.3 添加headers

HTTP请求中可以添加headers,headers可以用来传递一些非常重要的信息。例如,要向知乎发送GET请求,代码如下:

import requests

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.36'

}

response = requests.get('https://www.zhihu.com', headers=headers)

print(response.text)

在headers字典中指定了User-Agent,这是浏览器向服务器发送的一项重要信息,标识了浏览器的基本信息。

4. 发送POST请求

4.1 最简单的POST请求

发送POST请求的方式和GET请求类似,只需要调用post()方法,并传入URL和数据即可。例如,向httpbin发送一个最简单的POST请求,代码如下:

import requests

data = {'key': 'value'}

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

print(response.text)

同样,可以使用response.text来输出服务器的响应内容。

4.2 发送JSON数据

有时候需要向服务器发送JSON格式的数据,可以使用json参数来实现。例如,向GitHub API发送一个POST请求,代码如下:

import requests

import json

data = {'name': 'test', 'description': 'test desc'}

json_data = json.dumps(data)

url = 'https://api.github.com/user/repos'

headers = {'Authorization': 'Token YOUR_ACCESS_TOKEN'}

response = requests.post(url, data=json_data, headers=headers)

print(response.status_code)

在这个例子中,将一个字典data转换为JSON格式的字符串,并赋值给json_data变量。然后将URL设为GitHub API的创建仓库的URL,并使用headers参数指定access token。

4.3 发送文件

在HTTP请求中可以发送文件,并且可以设置文件的MIME类型。例如,想要上传一张图片到httpbin服务,代码如下:

import requests

files = {'image': open('test.jpg', 'rb')}

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

print(response.text)

在这里,使用open()函数打开test.jpg文件,并设置为二进制模式。然后将该文件赋值给files字典的'image'键。最后通过post()方法将文件上传到httpbin服务。

5. 其他HTTP请求方法

除了常用的GET和POST方法外,requests模块还支持PUT、DELETE和HEAD方法。用法与GET和POST方法类似。

6. 总结

本文介绍了如何使用Python 3.x中的requests库进行HTTP请求。具体地,可以使用get()方法和post()方法发送GET和POST请求,并且可以添加headers、cookies、请求参数等信息。另外,还可以使用PUT、DELETE和HEAD等HTTP方法。通过灵活使用requests库,可以实现强大的Web爬虫和客户端程序。

后端开发标签