python3学习-requests使用
前面我们讲过了urllib模块,知道他是用于网络请求的,这一节讲的requests还是用于网络请求的,只不过urllib是官方模块,而requests是第三方的模块。用过的人都说他才是’人类使用的’,哈哈,我也没觉得urllib有多么尿性啊!下面我们试着回归人类的生活吧。
这是第三方的模块,所以需要手动安装,安装过程在此不表,请度娘查之。
1.首先我们导入模块:
import requests
2.请求url:
get请求:
r = requests.get('https://www.baidu.com')
带参数的get请求:
params = {'k1':'v1','k2':'v2'}
r = requests.get('https://www.baidu.com',params=params)
print(r.url)
https://www.baidu.com?k1=1&k2=v2
post请求:
r = requests.post('https://www.baidu.com',data={'k1':'v1'})
上面传递的参数是字典,我们也可以传递json类型的参数:
import requests
import json
params = {'k1':'v1','k2':'v2'}
url = 'http://www.baidu.com'
requests.post(url,json.dump(params))
因为发送json格式太常见,requests模块已经为我们集成了json格式的数据,而不用我们引入json模块:
import requests
params = {'k1':'v1','k2':'v2'}
url = 'http://www.baidu.com'
requests.post(url,json=params)
下面还有更厉害的,如果我们想post一个文件怎么办呢,哈哈requests一样可以做到的:
import requests
url = 'http://www.baidu.com'
file = {'f':('test.txt',open('test.xls','rb'),'application/nnd.ms-excel',{'Expires':'0'})} #指定文件名等信息
requests.post(url,files=file)
如果你发送一个非常大的文件作为 multipart/form-data 请求,你可能希望将请求做成数据流。默认下 requests 不支持, 但有个第三方包 requests-toolbelt 是支持的。
import requests
from requests_toolbelt.multipart.encoder import MultipartEncoder
m = MultipartEncoder(
fields={'field0': 'value', 'field1': 'value',
'field2': ('filename', open('file.py', 'rb'), 'text/plain')}
)
r = requests.post('http://httpbin.org/post', data=m,
headers={'Content-Type': m.content_type})
3.获取响应信息
import requests
url = 'http://www.baidu.com'
resp = requests.post(url)
print(resp.text)
#如果这里你打印text是乱码那就是字符编码的问题啦
#你可以手动设置编码格式:
resp.encoding = 'UTF-8'
print('--------------------------------')
print(resp.content)
print('--------------------------------')
print(resp.headers)
print('--------------------------------')
print(resp.url)
text会以带格式的文本显示请求地址的网页源码,content响应的是二进制响应体。headers显示请求头信息,url显示该次请求的url。当然还有很多方法,在此不一一细说,感兴趣大家下去过一遍。
4.对压缩格式的相应内容自动解压缩
对于gzip和deflate格式的响应数据Requests会自动解码。
我们还是以豆瓣网为例,豆瓣的返回格式是gzip的,如果使用urllib的话需要我们手动调用gzip模块进行解压缩。
import urllib.request,urllib.parse
import gzip
url = 'https://www.douban.com/'
header = {
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Encoding':'gzip, deflate, sdch, br',
'Accept-Language':'zh-CN,zh;q=0.8',
'Cache-Control':'max-age=0',
'Connection':'keep-alive',
'Host':'www.douban.com',
'Upgrade-Insecure-Requests':'1',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36'
}
resp = urllib.request.Request(url,headers=header)
print(resp)
data = urllib.request.urlopen(resp)
data = data.read()
data = gzip.decompress(data).decode('UTF-8') #从请求头Accept-Encoding中看到网页被压缩过,所以需要解压缩
print(data)
现在有了Requests这个操作就大大缩水了:
import requests
url = 'https://www.douban.com/'
header = {
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Encoding':'gzip, deflate, sdch, br',
'Accept-Language':'zh-CN,zh;q=0.8',
'Cache-Control':'max-age=0',
'Connection':'keep-alive',
'Host':'www.douban.com',
'Upgrade-Insecure-Requests':'1',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36'
}
resp = requests.post(url,header)
print(resp.text)
不需要手动解压,Requests已经帮我们做了判断。
5.json响应内容☆☆☆
Requests 中也有一个内置的 JSON 解码器,助你处理 JSON 数据:
import requests
r = requests.get('http://www.tianyancha.com/v2/industryGuobiao.json')
print(r.json())
6.Cookie
如果某个响应中包含一些 cookie,你可以快速访问它们:
url = 'http://example.com/some/cookie/setting/url'
r = requests.get(url)
r.cookies['example_cookie_name']
要想发送你的cookies到服务器,可以使用 cookies 参数:
cookies = dict(cookies_are='working')
r = requests.get(url, cookies=cookies)
python3学习-requests使用的更多相关文章
- 2018-2019-2 20189206 Python3学习
python3简明教程学习 基本概念 脚本文件: 脚本文件英文为Script.实际上脚本就是程序,一般都是由应用程序提供的编程语言.应用程序包括浏览器(javaScript.VBScript).多媒体 ...
- python3使用requests登录人人影视网站
python3使用requests登录人人影视网站 继续练习使用requests登录网站,人人影视有一项功能是签到功能,需要每天登录签到才能升级. 下面的代码python代码实现了使用requests ...
- Python3学习(3)-高级篇
Python3学习(1)-基础篇 Python3学习(2)-中级篇 Python3学习(3)-高级篇 文件读写 源文件test.txt line1 line2 line3 读取文件内容 f = ope ...
- Python3学习(2)-中级篇
Python3学习(1)-基础篇 Python3学习(2)-中级篇 Python3学习(3)-高级篇 切片:取数组.元组中的部分元素 L=['Jack','Mick','Leon','Jane','A ...
- Python3学习(1)-基础篇
Python3学习(1)-基础篇 Python3学习(2)-中级篇 Python3学习(3)-高级篇 安装(MAC) 直接运行: brew install python3 输入:python3 --v ...
- Python3学习笔记(urllib模块的使用)转http://www.cnblogs.com/Lands-ljk/p/5447127.html
Python3学习笔记(urllib模块的使用) 1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, ...
- python3使用requests发闪存
闪存ing.cnblogs.com是博客园类似推特.饭否的服务, 我写了以下程序可以完成发闪存的操作,目的是顺便练习使用requests库. requests是一个python 轻量的http客户端库 ...
- Python3学习笔记 - 准备环境
前言 最近乘着项目不忙想赶一波时髦学习一下Python3.由于正好学习了Docker,并深深迷上了Docker,所以必须趁热打铁的用它来创建我们的Python3的开发测试环境.Python3的中文教程 ...
- Python3学习之路~0 目录
目录 Python3学习之路~2.1 列表.元组操作 Python3学习之路~2.2 简单的购物车程序 Python3学习之路~2.3 字符串操作 Python3学习之路~2.4 字典操作 Pytho ...
随机推荐
- Ural 2062:Ambitious Experiment(树状数组 || 分块)
http://acm.timus.ru/problem.aspx?space=1&num=2062 题意:有n个数,有一个值,q个询问,有单点询问操作,也有对于区间[l,r]的每个数i,使得n ...
- c# 图文添加文字斜水印
项目中有个添加水印的需求,需要给图片铺满斜水印. 网上搜了半天全是添加在图片上.下.左.右的案例. 于是按照网上的某一段案例自己修改了一些代码. Bitmap bitmap = new Bitmap( ...
- springboot2.0.4对接redis3.2.12版本哨兵模式
redis 哨兵模式的创建 1. 下载redis3.2.12版本.https://codeload.github.com/antirez/redis/zip/3.2.12 2. 解压后放到/usr/ ...
- Altium Designer设计PCB--如何设置铺铜与导线或过孔的间距
笑话: 到银行汇款,车临时停路边上. 为了怕交警罚就把朋友留下看车,跟他说有查车的过来了告诉我一声. 进去几分钟果然有交警来了. 那个朋友风风火火地闯进银行大声吼道:“大哥,警察来了,快走啊!” 偌大 ...
- 手机如何进入开发者选项--以vivo为例
发现一个新方法 打开拨号键盘 输入 *#*#7777#*#* 欧儿了
- Java 7 源码学习系列(一)——String
String表示字符串,Java中所有字符串的字面值都是String类的实例,例如“ABC”.字符串是常量,在定义之后不能被改变,字符串缓冲区支持可变的字符串.因为 String 对象是不可变的,所以 ...
- codeblocks出现'to_string' was not declared in this scope 的问题,用g++11编译环境
在将数字转化为字符串时使用to_string()竟然出现了'to_string' was not declared in this scope,我头文件用的万能头文件肯定没问题,而这个函数在其他的CB ...
- 神经大条的我-->记录我那些容易忘记的知识点
1.springmvc中每次进来的request都是保存在ThreadLocal里的,所以不会存在线程问题.可以直接用@Autowired全局注入 参考地址:https://my.oschina.n ...
- .NET多线程之调用上下文CallContext
命名空间:System.Runtime.Remoting.Messaging 类型完全限定名称:System.Runtime.Remoting.Messaging.CallContext 官方介绍:h ...
- 个人永久性免费-Excel催化剂功能第53波-无比期待的合并工作薄功能
合并工作薄.工作表功能,几乎每一款Excel插件都提供,而且系列衍生功能甚至有多达10多个.今天Excel催化剂重拾武器,在现有众多插件没提供到位的部分场景中,给予支持和补充,做到人有我优,人无我有的 ...