第十篇 requests模块
2024-09-18 04:28:09
1.安装requests
要安装requests,在终端中输入以下命令即可安装:
pip3 install requests
2.发送请求
使用requests发送请求首先需要导入requests模块,然后发送get请求到网站:
import requests r = requests.get("http://www.baidu.com")
发送其他类型的请求:
import requests r = requests.post("http://www.xxx.com", data={"key": "value"})
r = requests.put("http://www.xxx.com/method", data={"key": "value"})
r = requests.delete("http://www.xxx.com/delete")
r = requests.head("http://www.xxx.com/get")
r = requests.options("http://www.xxx.com/get")
3.传递URL参数
如果希望为URL的查询字符串传递数据,Python提供了支持,数据会议键/值对的形式置于URL中,跟在一个问号后面。
import requests r = requests.get("http://www.baidu.com/s", params={"wd": "Python"}) print(r.url) -------输出结果---------
http://www.baidu.com/s?wd=Python
4.状态码
从请求的响应中获取状态码,状态码会展示请求的状态。
如,状态码为200 OK表示请求成功,404 NOT FOUND表示找不到资源,可以通过response对象的.status_code查看返回的状态码:
In []: import requests In []: r = requests.get("http://www.baidu.com") In []: r.status_code
Out[]:
4.获取响应内容
我们可以读取服务器响应的内容。
import requests r = requests.get("http://www.baidu.com")
r.encoding = "utf-8"
print(r.text)
说明:r.text返回的是Unicode格式,通常需要转换为utf-8,不然的话,会是乱码,通过使用r.encoding='utf-8',可以避免乱码的问题。
5.获取二进制响应内容
import requests r = requests.get("http://www.baidu.com")
print(r.content)
print(r.content.decode("utf-8"))
r.content获取二进制数据,可以用来下载视频,图片之类,如果想要看的话,可以使用r.content.decode()解码。
6.获取JSON格式内容
import requests r = requests.get("http://www.xxx.com")
print(r.json())
使用r.json处理json数据。
7.定制请求头
当我们使用如下方式访问知乎时,是无法访问的,需要添加headers信息。
r = requests.get("https://www.zhihu.com")
r.encoding = "utf-8"
print(r.text.encode("gbk", "ignore").decode("gbk")) ------输出结果------
<html>
<head><title>400 Bad Request</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<hr><center>openresty</center>
</body>
</html>
想要访问就必须添加headers信息:
import requests headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"}
r = requests.get("https://www.zhihu.com", headers=headers) r.encoding = "utf-8"
print(r.text.encode("gbk", "ignore").decode("gbk"))
8.发送post请求
import requests data = {
"name": "zhangsan",
"age": ""
} r = requests.post("http://httpbin.org/post", data=data) print(r.text)
9.响应
# -*- coding:utf- -*-
import requests r = requests.get("http://www.baidu.com")
# 输出请求页面的状态码
print(r.status_code)
# 输出请求页面的所有请求头信息
print(r.headers)
# 输出请求的cookies信息
print(r.cookies)
# 输出请求的地址
print(r.url)
# 打印请求的历史记录
print(r.history)
最新文章
- C#操作mysql数据库
- [No00005D]如何高效利用GitHub
- js Dialog 去掉右上角的X关闭功能
- 【001:转载 ubuntu下: 建立本地SVN服务器】
- Padding Oracle Attack的一些细节与实现
- MFC一个类访问另一个类成员对象的成员变量值
- 关于JS闭包,作者不详(转)
- svn搭建以及可能遇到的问题解决方案
- 设计模式之Composite模式(笔记)
- 字符编码笔记:ASCII,Unicode和UTF-8【转载】
- 关于SQL IO的一些资料
- LeetCode 661. Image Smoother (图像平滑器)
- 如何使用 VS2015 进行远程调试?
- 排队时延(Queuing delay)
- UOJ#7. 【NOI2014】购票 | 线段树 凸包优化DP
- python 图片
- PyQt5学习笔记14----初识pyqt多线程操作
- 理解C#的Lock语法意义
- java 里定义的方法参数 (final String... args)
- springboot学习入门之五---开发Web应用之JSP篇