这是我参与11月更文挑战的第11天,活动详情查看:2021最后一次更文挑战
python中的urllib包主要是对网页进行操作,主要包括:
- urllib.request - 打开和读取 URL。
- urllib.error - 包含 urllib.request 抛出的异常。
- urllib.parse - 解析 URL。
- urllib.robotparser - 解析 robots.txt 文件。
在urllib的方法中,比较常用的方法就是request,这里面定义的URL函数,包括浏览器打开、cookies存储、重定向等等。
读取表格内容并发送web请求
当我们需要打开并登录到指定网址,就可以用到urllib2.Request(url_login,data1)的请求方法,其中的data数据可以是从表格中读取的。
对excel表格的说明:excel中的数据(数字)必须为文本格式,要看到左上角有绿色三角形,最好不要复制黏贴进去,容易出现格式错误,直接输入进去比较好。
这里将表格中的参数读取出来后,转换为json格式,并通过request方法请求出去。
import xlrd
import json
import urllib,urllib2
import string
data=xlrd.open_workbook("test.xls")
table=data.sheet_by_name("data")
nrows=table.nrows
ncols=table.ncols
returnData={}
for i in range(nrows):
returnData[table.cell(i,0).value]=table.cell(i,1).value
returnJson=json.dumps(returnData)
returnJson=json.loads(returnJson)
print returnJson
url_login='http://192.000.000.000/jdstore-console/user/checklogin'
# data1={"mobile":"18200000000","password":"000000","roleId":"R001"}
# print data1
data1=urllib.urlencode(returnJson)
req=urllib2.Request(url_login,data1)
res=urllib2.urlopen(req)
res=res.read()
print res
有返回参数 说明接口已经通了,剩下就是参数的问题了(内容、格式json) 如果什么也没有返回,就是接口没有调通,可能是服务器问题,header问题(cookie)等等。
post 参数提交格式
data={'isEnable':'false','name':'最近好吗','questions':[{"isDelete":"false","isRequire":"false","type":0,"name":"第一题","orders":"null","id":"null","defaultValue":"{"0":"1","1":"2","2":"3"}","isNew":"true"}],'remark':'备注','users':'8d43fa4ce3e9434fab6cac7ccdb3d0fd'}
括号里面的部分不需要单引号。
post发送data数据的另外一种数据格式: urlencoded
例如:POST www.example.com HTTP/1.1 Content-Type: application/x-www-form-urlencoded;charset=utf-8 title=test&sub%5B%5D=1&sub%5B%5D=2&sub%5B%5D=3
下期继续讲一下带cookie的请求方式。