第十篇 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类型,还得解码,想直接把返回结果拿出 ...
随机推荐
- python爬西刺代理
爬IP代码 import requests import re import dauk from bs4 import BeautifulSoup import time def daili(): p ...
- 初学Python--列表(List)
1.索引 列表中的元素类型未必统一,如: listExample=[1,2,'a','b'] 元素下标索引以0开始 firstEle=listExample[0] 不能进行越界索引,但可以倒序索引 l ...
- Python基础学习三 字符串
字符串方法 slit = ['a', 'b', 'c', 'd', 'f', 'g'] s2='hhhhhhhhhh' tu = (1,2,3,4,5) d={'name':'nnn','age':1 ...
- python发送包含html、图片、附件和链接的邮件
1.smtplib模块的使用 smtplib库用来发送邮件.需要用到的函数如下: 连接到SMTP服务器,参数为SMTP主机和端口: SMTP.connect([host[,port]]) 登录SMTP ...
- Apache Hive 建表操作的简单描述
客户端连接hive [root@bigdata-02 bin]# ./beeline Beeline version by Apache Hive beeline: Connecting : Ente ...
- 【bzoj1614】[Usaco2007 Jan]Telephone Lines架设电话线
题目描述 Farmer John打算将电话线引到自己的农场,但电信公司并不打算为他提供免费服务.于是,FJ必须为此向电信公司支付一定的费用. FJ的农场周围分布着N(1 <= N < ...
- jQuery 对象和 json 之间的转换
JSON.parse() json 转换成 对象 JSON.stringify() 对象转换成json 想问下广大网友大神 js 里面有数组转换或者转换成数组的函数么?小弟等--
- SaeMail使用示例
SAE的官方文档:http://apidoc.sinaapp.com/sae/SaeMail.html SaeMail类的具体实现:http://apidoc.sinaapp.com/__fileso ...
- Unix基本系统数据类型和stat结构体
Unix基本系统数据类型 历史上,某些UNIX变量已与某些C数据类型联系在一起,例如,历史上主.次设备号存放在一个1 6位的短整型中, 8位表示主设备号,另外8位表示次设备号.但是,很多较大的系统需要 ...
- p2148 [SDOI2009]E&D
传送门 分析 https://www.luogu.org/blog/flashblog/solution-p2148 代码 #include<bits/stdc++.h> using na ...