发表于: 2018-01-08 22:24:08
1 985
今天完成的事情:学习与使用urllib的POST方法
1、使用POST的步骤
第一步:导入urllib库的parse模块
from urllib import parse
第二步:使用urlencode生成post数据
postData = parse.urlencode([
(key1,value1),
(key2,value2),
(key3,value3)
])
第三步:使用postData发送post请求
resp = request.urlopen(req,data=postData.encode("utf-8"))
第四步:获得请求状态
resp.status
2、使用案例
以查询台湾高铁时刻表为例:
网址: http://www.thsrc.com.tw/tw/TimeTable/SearchResult
(注:查询国内列车时刻时发现好像都是采用GET方式,没找到POST方式的,只好用这个案例将就下了)
通过360浏览器的F12开发人员工具,有关信息如下图:
3、POST调试
根据以上相关信息,先在Postman插件中,配置好Headers和Body中的参数变量,如下图调试:
点击蓝色按钮“Send”后,成功请求出相应的数据,如下图:
4、Python代码编写
from urllib import request
from urllib import parse
req = request.Request("http://www.thsrc.com.tw/tw/TimeTable/SearchResult")
postData = parse.urlencode([
("StartStation", "977abb69-413a-4ccf-a109-0272c24fd490"),
("EndStation", "3301e395-46b8-47aa-aa37-139e15708779"),
("SearchDate", "2018/01/09"),
("SearchTime", "21:00"),
("SearchWay", "DepartureInMandarin")
])
req.add_header("Origin", "http://www.thsrc.com.tw")
req.add_header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36")
resp = request.urlopen(req,data=postData.encode("utf-8"))
print(resp.read().decode("utf-8"))
5、效果截图
今天收获:
为了调试POST,意外接触到Postman这个接口调试插件,花了2个多小时的摸索,初步掌握了其使用方法,也算是一个意外惊喜了!
评论