第十篇 requests模块
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)
第十篇 requests模块的更多相关文章
- Python进阶【第十篇】模块(上)
·一.模块 模块就是一组功能的集合体,我们的程序可以导入模块来复用模块里的功能.为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这 ...
- Python之路(第二十篇) subprocess模块
一.subprocess模块 subprocess英文意思:子进程 那什么是进程呢? (一)关于进程的相关理论基础知识 进程是对正在运行程序的一个抽象,进程的概念起源于操作系统,是操作系统最核心的概念 ...
- 第二十篇 sys模块
修改环境变量 import sys sys.path.append() 但是,这种修复方式只是临时修改 如果要永久修改,就要电脑里配置环境变量. sys.argv:命令行参数List,第一个元素是程序 ...
- 第十篇、模块一、sys\os\hashlib模块的应用
一.模块分为三种 1)自定义模块 2)第三方模块 3)内置模块 如何导入模块? 下面两种: 1)import 模块名字 as 别名(重新给模块命名) 2)from 模块名字 import 功能( ...
- Python开发【第十篇】:模块
模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才 ...
- 洗礼灵魂,修炼python(61)--爬虫篇—【转载】requests模块
requests 1.简介 Requests 是用Python语言编写的第三方库,所以你需要pip安装,安装过程就略过了.它基于urllib,采用 Apache2 Licensed 开源协议的 HTT ...
- [Python笔记]第十篇:模块续
requests Python标准库中提供了:urllib等模块以供Http请求,但是,它的 API 太渣了.它是为另一个时代.另一个互联网所创建的.它需要巨量的工作,甚至包括各种方法覆盖,来完成最简 ...
- 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验二十:SDRAM模块③ — 页读写 α
实验二十:SDRAM模块③ — 页读写 α 完成单字读写与多字读写以后,接下来我们要实验页读写.丑话当前,实验二十的页读写只是实验性质的东西,其中不存在任何实用价值,笔者希望读者可以把它当成页读写的热 ...
- python学习笔记(十八)网络编程之requests模块
上篇博客中我们使用python自带的urllib模块去请求一个网站,或者接口,但是urllib模块太麻烦了,传参数的话,都得是bytes类型,返回数据也是bytes类型,还得解码,想直接把返回结果拿出 ...
随机推荐
- 011. Python中*args, **kwargs 和 pass 和self 解释
*args, **kwargs →在python都表示可变参数, *args表示任意多个任意类型无名参数, 是一个元组; **kwargs表示关键字参数(key/value参数), 是一个字典,接收的 ...
- Rest之路 - Rest架构中的重要概念
资源 在Rest的架构之内,讲一切内容都是为资源.每一个资源都被定义为一个URI. 格式: <protocol>://<service-name>/<ResourceTy ...
- java成神之——java常识
java常识 简单DOS命令 java基础名词 java编译和运行流程 Eclipse常用快捷键 Eclipse相关操作 java基本数据类型 java基本数据类型转换 java常用运算符 java流 ...
- Apache Shiro 权限框架
分享一个视屏教程集合 http://www.tudou.com/home/konghao/item 1.Shiro Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码 ...
- Linux的基本指令shell
计算机语言的进化过程,7代语言 机器语言(6种位运算)-> 汇编语言->C语言 -> C++/Java -> Paython / go /Ruby -> 自 ...
- java Web jsp和servlet的关系
JSP在本质上就是SERVLET,但是两者的创建方式不一样Servlet完全是JAVA程序代码构成,擅长于流程控制和事务处理,通过Servlet来生成动态网页很不直观JSP由HTML代码和JSP标签构 ...
- 分布式全文检索系统SolrCloud简介
前言 本文简单描述SolrCloud的特性,基本结构和入门,基于Solr4.5版本. Lucene是一个Java语言编写的利用倒排原理实现的文本检索类库.Solr是以Lucene为基础实现的文本检索应 ...
- AlphaPose ubuntu16 python2安装
#https://www.tensorflow.org/install/install_linux#ValidateYourInstallation #https://github.com/MVIG- ...
- 686. Repeated String Match 字符串重复后的子字符串查找
[抄题]: Given two strings A and B, find the minimum number of times A has to be repeated such that B i ...
- 747. Largest Number At Least Twice of Others比所有数字都大两倍的最大数
[抄题]: In a given integer array nums, there is always exactly one largest element. Find whether the l ...