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模块的更多相关文章

  1. Python进阶【第十篇】模块(上)

    ·一.模块 模块就是一组功能的集合体,我们的程序可以导入模块来复用模块里的功能.为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这 ...

  2. Python之路(第二十篇) subprocess模块

    一.subprocess模块 subprocess英文意思:子进程 那什么是进程呢? (一)关于进程的相关理论基础知识 进程是对正在运行程序的一个抽象,进程的概念起源于操作系统,是操作系统最核心的概念 ...

  3. 第二十篇 sys模块

    修改环境变量 import sys sys.path.append() 但是,这种修复方式只是临时修改 如果要永久修改,就要电脑里配置环境变量. sys.argv:命令行参数List,第一个元素是程序 ...

  4. 第十篇、模块一、sys\os\hashlib模块的应用

    一.模块分为三种 1)自定义模块 2)第三方模块 3)内置模块 如何导入模块? 下面两种: 1)import 模块名字  as 别名(重新给模块命名) 2)from  模块名字  import 功能( ...

  5. Python开发【第十篇】:模块

    模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才 ...

  6. 洗礼灵魂,修炼python(61)--爬虫篇—【转载】requests模块

    requests 1.简介 Requests 是用Python语言编写的第三方库,所以你需要pip安装,安装过程就略过了.它基于urllib,采用 Apache2 Licensed 开源协议的 HTT ...

  7. [Python笔记]第十篇:模块续

    requests Python标准库中提供了:urllib等模块以供Http请求,但是,它的 API 太渣了.它是为另一个时代.另一个互联网所创建的.它需要巨量的工作,甚至包括各种方法覆盖,来完成最简 ...

  8. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验二十:SDRAM模块③ — 页读写 α

    实验二十:SDRAM模块③ — 页读写 α 完成单字读写与多字读写以后,接下来我们要实验页读写.丑话当前,实验二十的页读写只是实验性质的东西,其中不存在任何实用价值,笔者希望读者可以把它当成页读写的热 ...

  9. python学习笔记(十八)网络编程之requests模块

    上篇博客中我们使用python自带的urllib模块去请求一个网站,或者接口,但是urllib模块太麻烦了,传参数的话,都得是bytes类型,返回数据也是bytes类型,还得解码,想直接把返回结果拿出 ...

随机推荐

  1. 七 Kafka Streams VS Consumer API

    1 kafka Streams:   概念: 处理和分析储存在Kafka中的数据,并把处理结果写回Kafka或发送到外部系统的最终输出点,它建立在一些很重要的概念上,比如事件时间和消息时间的准确区分, ...

  2. haproxy启动时提示失败

    haproxy启动时提示失败:[ALERT] 164/110030 (11606) : Starting proxy linuxyw.com: cannot bind socket 这个问题,其实就是 ...

  3. Python字符串笔录

    python字符串操作实方法,包括了几乎所有常用的python字符串操作,如字符串的替换.删除.截取.复制.连接.比较.查找.分割等 1.去空格及特殊符号 >>> s = '123 ...

  4. new Com

    CreateOleObject System.Win.ComObj.hpp #include <objbase.h>     Winapi.ActiveX.pas   CoInitiali ...

  5. sendMail在centos下的安装

    一.sendEmail介绍   SendEmail is a lightweight, command line SMTP email client. If you have the need to ...

  6. ffmpeg码率控制

    一.VBR与CBR的含义和区别 VBR是动态码率.CBR是静态码率. VBR(Variable Bitrate)动态比特率.也就是没有固定的比特率,压缩软件在压缩时根据音频数据即时确定使用什么比特率, ...

  7. pandas中DataFrame相关

    1.创建 1.1  标准格式创建 DataFrame创建方法有很多,常用基本格式是:DataFrame 构造器参数:DataFrame(data=[],index=[],coloumns=[]) In ...

  8. Java多线程-线程的调度(优先级)

    与线程休眠类似,线程的优先级仍然无法保障线程的执行次序.只不过,优先级高的线程获取CPU资源的概率较大,优先级低的并非没机会执行. 线程的优先级用1-10之间的整数表示,数值越大优先级越高,默认的优先 ...

  9. Tornado之自定义session

      面向对象基础 面向对象中通过索引的方式访问对象,需要内部实现 __getitem__ .__delitem__.__setitem__方法 #!/usr/bin/env python # -*- ...

  10. java Web 监听器Listener详解

    简介 JavaWeb中的监听器是Servlet规范中定义的一种特殊类,它用于监听web应用程序中的ServletContext.HttpSession和 ServletRequest这三大域对象的创建 ...