requests 模块

基本理论

Python requests 是一个常用的 HTTP 请求库,可以方便地向网站发送 HTTP 请求,并获取响应结果。
requests 模块比 urllib 模块更简洁。
如同 JavaScript 的 AJAX 与 C#的 HttpClient 一样,requests 模块用于请求网络接口,发送 get、post、put 等 http 请求。

代码示例

发送 Get 网络请求:

1
2
3
4
5
6
# 导入 requests 包
import requests
# 发送请求
res = requests.get('https://www.baidu.com/')
# 返回网页内容
print(res.text)

常用方法

requests 模块有以下常用方法:

方法 描述
delete(url, args) 发送 DELETE 请求到指定 url
get(url, params, args) 发送 GET 请求到指定 url
head(url, args) 发送 HEAD 请求到指定 url
patch(url, data, args) 发送 PATCH 请求到指定 url
post(url, data, json, args) 发送 POST 请求到指定 url
put(url, data, args) 发送 PUT 请求到指定 url
request(method, url, args) 向指定的 url 发送指定的请求方法
使用 requests.request()发送 http 请求代码如下:
1
2
3
4
5
6
7
8
# 导入 requests 包
import requests

# 发送请求
x = requests.request('get', 'https://www.runoob.com/')

# 返回网页内容
print(x.status_code)

设置请求头

很多时候我们需要附带或修改请求头的信息比如携带 cookie,以下代码演示发送 get 请求并携带请求头的操作:

1
2
3
4
5
6
7
8
9
10
11
# 导入 requests 包
import requests


kw = {'s':'python 教程'}

# 设置请求头
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}

# params 接收一个字典或者字符串的查询参数,字典类型自动转换为url编码,不需要urlencode()
response = requests.get("https://www.runoob.com/", params = kw, headers = headers)

response 对象

基本理论

每次调用 requests 请求之后,会返回一个 response 对象,该对象包含了具体的响应信息,如状态码、响应头、响应内容等:

1
2
3
4
print(response.status_code)  # 获取响应状态码
print(response.headers) # 获取响应头
print(response.content) # 获取响应内容
print(response.json()) # 需要返回内为json格式,不然就报错

response 对象还有许多属性与方法,可以查文档了解他们。

json模块

基本理论

json是一种在http通信中常用的数据格式。
Python3 中可以使用 json 模块来对 JSON 数据进行编解码,它包含了两个函数:
json.dumps(): 对数据进行编码。
json.loads(): 对数据进行解码。

代码示例

将一个JSON编码的字符串转换回一个Python数据结构:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/python3

import json

# Python 字典类型转换为 JSON 对象
data1 = {
'no' : 1,
'name' : 'Runoob',
'url' : 'http://www.runoob.com'
}

json_str = json.dumps(data1)
print ("Python 原始数据:", repr(data1))
print ("JSON 对象:", json_str)

# 将 JSON 对象转换为 Python 字典
data2 = json.loads(json_str)
print ("data2['name']: ", data2['name'])
print ("data2['url']: ", data2['url'])