摘要:昨天有个朋友联系我说不能用了,想起来改版了,所以就重新写了这个,由于时间紧需要优化,所以优化的任务交给大家了,然后新增加了价格查询出发时间和到站时间上个效果图,然后我再上代码火车票余票查询和价格查询这个由于时间紧
昨天有个朋友联系我QQ说API不能用了,想起来12306改版了,所以就重新写了这个API,由于时间紧需要优化,所以优化的任务交给大家了,然后新增加了价格查询-出发时间和到站时间!上个效果图,然后我再上代码!
$value) {
$price = doget("http://kyfw.12306.cn/otn/leftTicket/queryTicketPrice?train_no=".$data[$key]["train_no"]."&from_station_no=".$data[$key]["from_station_no"]."&to_station_no=".$data[$key]["to_station_no"]."&seat_types=".$data[$key]["seat_types"]."&train_date=$date");
$data[$key]["gr_num"] = $data[$key]["gr_num"]."(".$price["data"]["A6"].")";
$data[$key]["qt_num"] = $data[$key]["qt_num"]."(".$price["data"]["OT"][0].")";
$data[$key]["rw_num"] = $data[$key]["rw_num"]."(".$price["data"]["A4"].")";
$data[$key]["rz_num"] = $data[$key]["rz_num"]."(".$price["data"]["A2"].")";
$data[$key]["tz_num"] = $data[$key]["tz_num"]."(".$price["data"]["P"].")";
$data[$key]["wz_num"] = $data[$key]["wz_num"]."(".$price["data"]["WZ"].")";
$data[$key]["yw_num"] = $data[$key]["yw_num"]."(".$price["data"]["A3"].")";
$data[$key]["yz_num"] = $data[$key]["yz_num"]."(".$price["data"]["A1"].")";
$data[$key]["ze_num"] = $data[$key]["ze_num"]."(".$price["data"]["O"].")";
$data[$key]["zy_num"] = $data[$key]["zy_num"]."(".$price["data"]["M"].")";
$data[$key]["swz_num"]= $data[$key]["swz_num"]."(".$price["data"]["A9"].")";
}
}
return $data;
}
function doget($url){
if(!function_exists("file_get_contents")) {
$optionget = array("http" => array("method" => "GET", "header" => "User-Agent:Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.21022; .NET CLR 3.0.04506; CIBA)
Accept:*/*
Referer:https://kyfw.12306.cn/otn/lcxxcx/init"));
$file_contents = file_get_contents($url, false , stream_context_create($optionget));
} else {
$ch = curl_init();
$timeout = 5;
$header = array(
"Accept:*/*",
"Accept-Charset:GBK,utf-8;q=0.7,*;q=0.3",
"Accept-Encoding:gzip,deflate,sdch",
"Accept-Language:zh-CN,zh;q=0.8,ja;q=0.6,en;q=0.4",
"Connection:keep-alive",
"Host:kyfw.12306.cn",
"Referer:https://kyfw.12306.cn/otn/lcxxcx/init",
);
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER,$header);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
}
$file_contents = json_decode($file_contents,true);
return $file_contents;
}
/*
*这个由于时间紧写的,所以很多地方还需要优化,希望大家改善一下,可以分部和文件缓存的形式提高执行速度--缺点执行速度慢--有待优化
*/
$data = gettrain("北京","天津","01-03");
/*
* ["gr_num"]=>高级软卧
* ["qt_num"]=>其他
* ["rw_num"]=> 软卧
* ["rz_num"]=>软座
* ["tz_num"]=>特等座
* ["wz_num"]=>无座
* ["yw_num"]=>硬卧
* ["yz_num"]=>硬座
* ["ze_num"]=>二等座
* ["zy_num"]=> 一等座
* ["swz_num"]=> 商务座
*/
$str="";
foreach($data as $key =>$value){
$str.="火车列次:{$data[$key]["station_train_code"]}";
$str.="始发站:{$data[$key]["start_station_name"]},终点站{$data[$key]["end_station_name"]}
";
$str.="出发时间:{$data[$key]["start_time"]},到站时间:{$data[$key]["arrive_time"]}
";
$str.="";
$str.= strpos($data[$key]["gr_num"],"()") ? "" :"高级软卧余票和价格:".$data[$key]["gr_num"]."
";
$str.= strpos($data[$key]["qt_num"],"()") ? "" :"其他余票和价格:".$data[$key]["qt_num"]."
";
$str.= strpos($data[$key]["rw_num"],"()") ? "" :"软卧余票和价格:".$data[$key]["rw_num"]."
";
$str.= strpos($data[$key]["rz_num"],"()") ? "" :"软座余票和价格:".$data[$key]["rz_num"]."
";
$str.= strpos($data[$key]["tz_num"],"()") ? "" :"特等座余票和价格:".$data[$key]["tz_num"]."
";
$str.= strpos($data[$key]["wz_num"],"()") ? "" :"无座余票和价格:".$data[$key]["wz_num"]."
";
$str.= strpos($data[$key]["yw_num"],"()") ? "" :"硬卧余票和价格:".$data[$key]["yw_num"]."
";
$str.= strpos($data[$key]["yz_num"],"()") ? "" :"硬座余票和价格:".$data[$key]["yz_num"]."
";
$str.= strpos($data[$key]["ze_num"],"()") ? "" :"二等座余票和价格:".$data[$key]["ze_num"]."
";
$str.= strpos($data[$key]["zy_num"],"()") ? "" :"一等座余票和价格:".$data[$key]["zy_num"]."
";
$str.= strpos($data[$key]["swz_num"],"()") ? "" :"商务座余票和价格:".$data[$key]["swz_num"]."
";
$str.= "======================下一列火车上===============================
";
}
echo $str;
文章首发在我的个人博客站地址:http://www.widuu.com/archives/01/919.html 希望大家一块去完善一下
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/20647.html
摘要:月日消息,网络问答社区知乎上一位用户爆料,网站已将车票查询业务放到阿里云计算平台上,帮助平稳渡过春运购票高峰。目前阿里云方面尚未对此事发表评论。 1月16日消息,网络问答社区知乎上一位用户爆料,12306网站已将车票查询业务放到阿里云计算平台上,帮助12306平稳渡过春运购票高峰。该用户声称为阿里程序员,曾参与12306春运项目。目前阿里云方面尚未对此事发表评论。 据其透露,...
摘要:春节抢票应该是每个在外游子的必修课,还有不足一个月就要过春节了,现在的你,是不是还奋战在抢票一线呢说到抢票,之所以现在大家能享受到流畅的移动互联网购票服务,其实背后都是云计算在加持,没想到吧,原来看似高深的云计算离我们如此之近。春节抢票应该是每个在外游子的必修课,还有不足一个月就要过春节了,现在的你,是不是还奋战在抢票一线呢?说到抢票,之所以现在大家能享受到流畅的移动互联网购票服务,其实背后...
摘要:科技改变生活,云计算也向政务民生领域逐渐延伸。整个年,各地方政府各民生领域拥抱云计算的速度明显在加快。阿里云分担流量压力年春运火车票售卖量创下历年新高,而铁路系统运营网站却并没有出现明显的卡滞。同阿里云的合作是关键之一。 2015年8月19日,国务院通过《关于促进大数据发展的行动纲要》,在全社会引起广泛影响。 科技改变生活,云计算也向政务、民生领域逐渐延伸。整个2015年,各地方政府、各...
摘要:因为自己在学校还有些事情,不知道具体哪天回家,于是就自己写了一个监控的小程序一功能命令行输入火车站名和日期,修改查询周期定时器时间,即可实现周期性的余票查询并用邮件通知二流程概述命令行输入信息利用信息,发起请求,查询余票信息使用模块来发送邮 因为自己在学校还有些事情,不知道具体哪天回家,于是就自己写了一个监控的小程序 一.功能: 命令行输入火车站名和日期,修改查询周期(定时器时间),即...
摘要:项目简介使用抓取网站信息提供一个命令行的火车票查询工具。项目由小蜗牛发布在实验楼,项目在线练习地址实现火车票查询工具,可以直接在教程中下载代码使用。命令行参数解析工具。 showImg(https://segmentfault.com/img/remote/1460000006767253);项目简介:使用 Python3 抓取 12306 网站信息提供一个命令行的火车票查询工具。通过...
阅读 3109·2021-11-04 16:06
阅读 932·2021-09-30 09:56
阅读 1987·2021-09-22 10:02
阅读 2757·2019-08-29 13:43
阅读 2425·2019-08-29 13:42
阅读 2452·2019-08-29 12:21
阅读 1223·2019-08-29 11:29
阅读 1507·2019-08-26 13:51