发表于: 2018-01-08 22:24:08

1 816



今天完成的事情:学习与使用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个多小时的摸索,初步掌握了其使用方法,也算是一个意外惊喜了!




返回列表 返回列表
评论

    分享到