python自动化测试学习笔记-6urllib模块&request模块

python3的urllib 模块提供了获取页面的功能。

urllib.request.urlopen(urldata=None, [timeout, ]*cafile=Nonecapath=Nonecadefault=Falsecontext=None)

-         url:  需要打开的网址

-         data:Post提交的数据

-         timeout:设置网站的访问超时时间

直接用urllib.request模块的urlopen()获取页面,page的数据格式为bytes类型,需要decode()解码,转换成str类型。

import urllib.request

# import json# import requestsurl="http://api.nnzhp.cn/api/user/stu_info?stu_name=xiaohei"req=urllib.request.urlopen(url)res=req.read().decode()print(res)

执行:

{
        "error_code": 2,
        "msg": "无结果"
}

urllib 中实现post数据请求

urlopen()的data参数默认为None,当data参数不为空的时候,urlopen()提交方式为Post。

url1=‘http://api.nnzhp.cn/api/user/login ‘data={    ‘username‘:‘niuhanyang‘,    ‘passwd‘:‘aA123456‘}#urlencode()主要作用就是将url附上要提交的数据。经过urlencode()转换后的data数据为?username=niuhanyang&passwd=aA123456,## Post的数据必须是bytes或者iterable of bytes,不能是str,因此需要进行encode()编码data=urllib.parse.urlencode(data).encode(‘utf-8‘)#最终提交的url是http://api.nnzhp.cn/api/user/login?username=niuhanyang?passwd=aA123456req=urllib.request.Request(url1,data=data)page=urllib.request.urlopen(req).read()print(page.decode())

执行查看结果:

{
        "error_code": 0,
        "login_info": {
                "login_time": "20180129202722",
                "sign": "7e4c46e5790ca7d5165eb32d0a895ab1",
                "userId": 1
        }
}

我们看到使用urllib会比较麻烦,需要转码,赋值等操作,request模块可以更加简便的完成请求操作,如下:

1、首先需要安装Request模块

pip install requests

2、导入request模块

import requests

各种接口操作如下:

import requestsimport json#发送无参数的get请求url=‘http://www.baidu.com‘req=requests.get(url)print(req.text)#返回的字符串类型

#发送有参数的request请求url1=‘http://api.nnzhp.cn/api/user/stu_info?stu_name=feifei‘req1=requests.get(url1)print(req1.json())#返回的字典列表

#发送post请求url2=‘http://api.nnzhp.cn/api/user/login ‘data={    ‘username‘:‘niuhanyang‘,    ‘passwd‘:‘aA123456‘}req=requests.post(url2,data)#发送的post氢气,第一个参数是url,第二个参数是请求的数据print(req.json())

#发送入参是json类型的post请求url3=‘http://api.nnzhp.cn/api/user/add_stu‘data={    ‘name‘:‘feifei‘,    ‘phone‘:‘13121111112‘,    ‘grade‘:‘1000‘}

req=requests.post(url3,json=data)print(req.json())

#发送带有cookie的post请求#添加cookieurl4=‘http://api.nnzhp.cn/api/user/gold_add‘data={    ‘stu_id‘:230,    ‘gold‘:88888}cookies={‘feifei‘:‘a2b454c3830e20e7d9916f6b52d6a3a7‘}req=requests.post(url4,data,cookies=cookies)print(req.json())

#发送带有Referer请求的post请求#url5=‘http://api.nnzhp.cn/api/user/all_stu‘data={    ‘Referer‘:‘http://api.nnzhp.cn/‘}req=requests.get(url5,headers=data)print(req.json())

#下载文件请求

url6=‘https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1517138333609&di=327abc49fc6d63fed19124cdf826d130&imgtype=0&src=http%3A%2F%2Fimg4.duitang.com%2Fuploads%2Fitem%2F201510%2F17%2F20151017223821_ZSWBc.jpeg‘r=requests.get(url6)#下载直接请求url然后进行保存#print(r.status_code)#请求状态码是二进制res=r.content#获取二进制格式fw=open(‘feifei.jpg‘,‘wb‘)fw.write(res)#保存文件fw.close()

#上传文件

url7=‘http://api.nnzhp.cn/api/file/file_upload‘f=open(‘E:\\besttest\\python\\besttest_code\\练习\\day7笔记\\api\\feifei.jpg‘,‘rb‘)r=requests.post(url7,files={‘file‘:f})print(r.json())#
#下载页面url=‘http://www.runoob.com/python/python-intro.html‘r=requests.get(url)f=open(‘python.html‘,‘wb‘)f.write(r.content)f.close()



原文地址:https://www.cnblogs.com/phoebes/p/8379490.html

时间: 2024-07-31 03:26:29

python自动化测试学习笔记-6urllib模块&request模块的相关文章

【Python】学习笔记4-random、string模块

1.random随机数 1 import random,string 2 print(random.random())#随机浮点数,默认取0-1,不能指定范围 3 print(random.randint(1,20))#随机整数 4 print(random.randrange(1,20))#随机产生一个range 5 print(random.choice('x23serw4'))#随机取一个元素 6 print(random.sample(string.digits,2))#从序列中随机取几

python自动化测试学习笔记-2-字典、元组、字符串方法

一.字典 Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串.数字.元组等其他容器模型. 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示: f = {key1 : value1, key2 : value2 } 键必须是唯一的,但值则不必. 值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组. d={'name':'pei','age':12,'sex':'女','addr':'昌

STM32学习笔记2(TIM模块定时器)

TIM模块定时器向上溢出 & 输出比较 首先我们必须肯定ST公司的实力,也承认STM32的确是一款非常不错的Cortex-M3核单片机,但是,他的手册实在是让人觉得无法理解,尤其是其中的TIM模块,没有条理可言,看了两天几乎还是不知所云,让人很是郁闷.同时配套的固件库的说明也很难和手册上的寄存器对应起来,研究起来非常费劲!功能强大倒是真的,但至少也应该配套一个让人看的明白的说明吧~~两天时间研究了STM32定时器的最最基础的部分,把定时器最基础的两个功能实现了,余下的功能有待继续学习.首先有一点

2. 蛤蟆Python脚本学习笔记二基本命令畅玩

2. 蛤蟆Python脚本学习笔记二基本命令畅玩 本篇名言:"成功源于发现细节,没有细节就没有机遇,留心细节意味着创造机遇.一件司空见惯的小事或许就可能是打开机遇宝库的钥匙!" 下班回家,咱先来看下一些常用的基本命令. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/48092873 1.  数字和表达式 看下图1一就能说明很多问题: 加法,整除,浮点除,取模,幂乘方等.是不是很直接也很粗暴. 关于上限,蛤蟆不太清楚

[简明python教程]学习笔记2014-05-05

今天学习了python的输入输出.异常处理和python标准库 1.文件 通过创建一个file类的对象去处理文件,方法有read.readline.write.close等 [[email protected] 0505]# cat using_file.py #!/usr/bin/python #filename:using_file.py poem='''Programing is fun when the work is done use Python! ''' f=file('poem.

Python Click 学习笔记(转)

原文链接:Python Click 学习笔记 Click 是 Flask 的团队 pallets 开发的优秀开源项目,它为命令行工具的开发封装了大量方法,使开发者只需要专注于功能实现.恰好我最近在开发的一个小工具需要在命令行环境下操作,就写个学习笔记. 国际惯例,先来一段 "Hello World" 程序(假定已经安装了 Click 包). # hello.py import click @click.command() @click.option('--count', default

[简明python教程]学习笔记之编写简单备份脚本

[[email protected] 0503]# cat backup_ver3.py #!/usr/bin/python #filename:backup_ver3.py import os import time #source source=['/root/a.sh','/root/b.sh','/root/c.sh'] #source='/root/c.sh' #backup dir target_dir='/tmp/' today=target_dir+time.strftime('

3. 蛤蟆Python脚本学习笔记三字符串

3. 蛤蟆Python脚本学习笔记三字符串 本篇名言:"平静的湖面只有呆板的倒映,奔腾的激流才有美丽的浪花!幸福不是靠别人来布施,而是要自己去赢取!生命的意义在不断挑战自己,战胜自己!" 这个本来放在昨天的,由于昨晚又太晚了,所以就搁在这里了.赶紧看看吧. 字符串两边都用双引号或者单引号包起来.否则就使用转移符号来转移一下. 输入在一起可以直接拼接. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/48112507

1.蛤蟆Python脚本学习笔记一环境搭建

1.蛤蟆Python脚本学习笔记一环境搭建 蛤蟆一直在想在工作的时候能不能有一个牛逼的工具来让自己工作更加轻松和快乐.用过C, C++, C#, JAVA,  SHELL,TCL,汇编,BAT等,感觉这些都是需要的时候能发挥作用,不能和我想象的一样.突然有一天,感觉Python实在不错,那么就和小伙伴们一起乐呵乐呵呗.万事开头难,我们先来搭建环境吧. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/48058315 1. 相关