这里我们讲下post请求方式下通过插件处理请求结果,以携程机票为例

http://trains.ctrip.com/TrainBooking/Search.aspx?from=beijing&to=shanghai&day=2&number=&fromCn=%B1%B1%BE%A9&toCn=%C9%CF%BA%A3

我们要获取的火车线路的起始站终点站以及运行时间等信息,为了得到这些信息我们可以这样按f12,选择network,如图

获取的这个请求即为我们所要数据,点开headers字段

可以看见这个请求为post方式,我们这里要用到这个请求的请求头,data参数

将请求头已经data参数写到请求前插件,这里等到平台上配置再细说,我们看看response值,是一个json数据,而我们所需要的数据就是在该json文件的每条记录里面,这个可以通过解析后插件来提取,初步的分析到这里为止,我们回到平台继续配置。

在平台上新建一个任务,完成基础配置,平台上处理post请求的url形式是

{"url":"...","data":{...}}

所以我们在这里初步构造一个post请求

{"url":" http://trains.ctrip.com/TrainBooking/Ajax/SearchListHandler.ashx?Action=searchColudTickets ","data":{"data":{"dname":"吉林","aname":"哈尔滨西","ddate":"2018-04-20"}}}

我们要先测试这个网址的正确性,所以在内容页新建一个正则,

.*http://trains.ctrip.com/TrainBooking/Ajax/SearchListHandler.ashx\\?Action=searchColudTickets.\*

作为正则即可,然后建一个字段json 保存页面html

点击保存,完成,着手写请求前插件。新建请求前插件

保存为test_ctrip_bef_req_1.py

在其他设置中,将我们写好的请求前插件应用,返回内容页进行测试,这个时候发现一个问题,获取的结果为空,如下所示。

仔细看下我们可以看见,因为我们的data参数中除了平台给定了的‘{}’之外,data里面也包含了’{}’,所以在这里,我们可以这样处理,构造这样的一个url

{"url":"http://trains.ctrip.com/TrainBooking/Ajax/SearchListHandler.ashx?Action=searchColudTickets","data":{"dname":"吉林","aname":"哈尔滨西","ddate":"%s"}}

然后在请求前插件中再进行配置,如下所示

ddate中传%s,在插件中通过获取当前日期的后一天进行规整,然后再通过json提取到传入的具体data参数,再次构造成

{"url":" http://trains.ctrip.com/TrainBooking/Ajax/SearchListHandler.ashx?Action=searchColudTickets ","data":{"data":{"dname":"吉林","aname":"哈尔滨西","ddate":"2018-04-20"}}}

然后再返回参数时,直接返回我们新构造的这个url_new,这次再来测试下

这时看到已经成功取到json值了,那么接下来开始配置解析后插件了

新建解析后插件:

然后在配置中将这个请求后插件应用,返回测试,发现这个时候已经成功取到我们要的数据

点击保存,完成,这个任务就已经配置完成了

results matching ""

    No results matching ""