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爬虫和客户端程序。