第十篇 requests模块

1.安装requests

要安装requests,在终端中输入以下命令即可安装:

1 pip3 install  requests

2.发送请求

使用requests发送请求首先需要导入requests模块,然后发送get请求到网站:

1 import requests
2 
3 r = requests.get("http://www.baidu.com")

发送其他类型的请求:

1 import requests
2 
3 r = requests.post("http://www.xxx.com", data={"key": "value"})
4 r = requests.put("http://www.xxx.com/method", data={"key": "value"})
5 r = requests.delete("http://www.xxx.com/delete")
6 r = requests.head("http://www.xxx.com/get")
7 r = requests.options("http://www.xxx.com/get")

3.传递URL参数

如果希望为URL的查询字符串传递数据,Python提供了支持,数据会议键/值对的形式置于URL中,跟在一个问号后面。

1 import requests
2 
3 r = requests.get("http://www.baidu.com/s", params={"wd": "Python"})
4 
5 print(r.url)
6 
7 -------输出结果---------
8 http://www.baidu.com/s?wd=Python

4.状态码

从请求的响应中获取状态码,状态码会展示请求的状态。

如,状态码为200 OK表示请求成功,404 NOT FOUND表示找不到资源,可以通过response对象的.status_code查看返回的状态码:

1 In [1]: import requests
2 
3 In [2]: r = requests.get("http://www.baidu.com")
4 
5 In [3]: r.status_code
6 Out[3]: 200

4.获取响应内容

我们可以读取服务器响应的内容。

1 import requests
2 
3 r = requests.get("http://www.baidu.com")
4 r.encoding = "utf-8"
5 print(r.text)

说明:r.text返回的是Unicode格式,通常需要转换为utf-8,不然的话,会是乱码,通过使用r.encoding='utf-8',可以避免乱码的问题。

 5.获取二进制响应内容

1 import requests
2 
3 r = requests.get("http://www.baidu.com")
4 print(r.content)
5 print(r.content.decode("utf-8"))

r.content获取二进制数据,可以用来下载视频,图片之类,如果想要看的话,可以使用r.content.decode()解码。

6.获取JSON格式内容

1 import requests
2 
3 r = requests.get("http://www.xxx.com")
4 print(r.json())

使用r.json处理json数据。

7.定制请求头

当我们使用如下方式访问知乎时,是无法访问的,需要添加headers信息。

 1 r = requests.get("https://www.zhihu.com")
 2 r.encoding = "utf-8"
 3 print(r.text.encode("gbk", "ignore").decode("gbk"))
 4 
 5 ------输出结果------
 6 <html>
 7 <head><title>400 Bad Request</title></head>
 8 <body bgcolor="white">
 9 <center><h1>400 Bad Request</h1></center>
10 <hr><center>openresty</center>
11 </body>
12 </html>

想要访问就必须添加headers信息:

1 import requests
2 
3 headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"}
4 r = requests.get("https://www.zhihu.com", headers=headers)
5 
6 r.encoding = "utf-8"
7 print(r.text.encode("gbk", "ignore").decode("gbk"))

 8.发送post请求

 1 import requests
 2 
 3 data = {
 4     "name": "zhangsan",
 5     "age": "28"
 6 }
 7 
 8 r = requests.post("http://httpbin.org/post", data=data)
 9 
10 print(r.text)

9.响应

 1 # -*- coding:utf-8 -*-
 2 import requests
 3 
 4 r = requests.get("http://www.baidu.com")
 5 # 输出请求页面的状态码
 6 print(r.status_code)
 7 # 输出请求页面的所有请求头信息
 8 print(r.headers)
 9 # 输出请求的cookies信息
10 print(r.cookies)
11 # 输出请求的地址
12 print(r.url)
13 # 打印请求的历史记录
14 print(r.history)
原文地址:https://www.cnblogs.com/zhuzhaoli/p/10368396.html