opts = { ... rejectUnauthorized: false ... }
@seasidesun 谢谢 已经ok
const rq = require('request-promise'); const async = require('async'); let arr = [16,17,18,19,20,22,23,24,25]; let train_code = 'D3125'; getData(); function getData() {//使用async控制并发 async.mapLimit(arr, 3, function (url, callback) { request12306(url, callback); }, function (err, result) { getData();//全部结束后继续请求 }); } function request12306(day,cb) { //使用request-promise请求接口 回调函数cb是为了通知async已经结束当前请求 let url = `https://kyfw.12306.cn/otn/leftTicket/queryA?leftTicketDTO.train_date=2017-01-${day}&leftTicketDTO.from_station=SZH&leftTicketDTO.to_station=SHH&purpose_codes=ADULT`; let opts = { url: url, method: 'GET', rejectUnauthorized: false, headers:{ 'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36' }, timeout:1000 }; rq(opts).then((data) => { checkData(JSON.parse(data),day); cb(); }).catch((err) => { cb(); return ''; }); } function checkData(data,day) { // console.log(data); let info = null; if(data.status==true&&data.httpstatus==200){ info = data.data; } for (let i = 0, len = info.length; i < len; i++) { let obj = info[i].queryLeftNewDTO; if(obj.station_train_code==train_code){ if(obj.zy_num!='无'||obj.ze_num!='无'||obj.wz_num!='无'){ console.log(`${day}日 ${train_code}有票`); } } } }
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
@seasidesun 谢谢 已经ok