APP下载

基于爬虫技术购票系统设计

2020-01-09鞠耀辉陈伟利

科学技术创新 2020年22期
关键词:中转站车次爬虫

鞠耀辉 陈伟利

(吉林建筑大学 电气与计算机学院,吉林 长春130118)

1 概述

由于高铁大力建设,现在铁路运行车次半年至1 年间就调整一次。铁路出行因高铁的出现,与飞机有了竞争力,成为现代出行重要工具。相应的购票问题就出现了,尤其在春运、法定节假日、寒(暑)假学生潮和景点的旅游旺季等。那么,如何如何全力“榨取”火车票资源,实现火车全负荷运行,成为了一项可研发项目。

基于Python 爬虫技术的系统设计可以很好地解决这些问题。采用Python 爬虫技术的系统软件,即能解决人们购不到票或购票难的问题。不仅减小了购票时花费的精力,也最大限度的利用了火车的运力。本文章主要阐述了ZigBee 路灯控制系统中节点的具体设计方案及组网。

2 系统总体设计

在该软件运行之前,先导入火车运行车次、起点、中间站点、终点及时间信息构成链状数据结构。然后建立标记起点,可任意转换线路的中间点,终点。之后建立分段的车票价格、运行时间,这个时间包括了出发时间及到达时间。再建立优选方案,在乘客进行购票时,自动优选直达票,其次是同车换乘,最后才会选择中转车站,并且车站尽量选择同一站或相近的车站。之后建立硬件服务器,在服务器上运行Python 算法程序以达到接收手机APP 和WEB 信息的目的。通过算法的计算,导出最优的乘车方案,提供给用户。

2.1 爬虫技术

爬虫,应该称为网络爬虫,也叫网页蜘蛛、网络机器人、网络蚂蚁等。其实,搜索引擎,就是网络爬虫的应用者。但搜索引擎不能对所需网站及特定数据进行获取,因此,需要自己开发爬虫来解决问题。随着互联网的迅速发展,大数据时代的来临,数据挖掘在从海量数据中探查潜在的价值信息起到了重要的作用,成为当下热门的研究和实践方向之一。python 作为数据挖掘领域中较为热门的程序语言,其丰富的技术库和强大的科学计算能力成为数据挖掘过程中不可或缺的工具。总的说,Python是一个使用简洁方便,很适合初学者使用的语言。基于Python的网络爬虫可以更加准确的获取我们所需的目标数据,具有一定的研究价值。

2.2 运行方案

爬在完成手机APP 的编写及运行测试后,提供给用户免费使用。用户可以直接使用此软件,也可以在遇到购票上的困难时使用该软件。用户进行购票时,对用户输入的起点、终点及具体车次进行数据采集,通过计算好的优选方案优先向用户推荐直达票,直达无票的情况下,直接使用同车换乘的方案,即在用户不需要换座换车的同时达到中转的目的。一站如果达不到目的那就增加到两站、三站。在这种方案进行不下去或者耗费费用时间行程等太高时,进行下一个方案。根据席位的差别进行席位交叉换乘,即购买同车另一个或另一种席位的中转票,只需切换席位就能达到中转的目的。如果席位切换也不行时,若是购票者愿意多购买一站,还可以在分段的行程中,有一两个站点的重叠,也就是说在其中的两站之间,购票者同时买了两张票,但也能够达到同车换乘的目的。叠加换乘也不行,那就通过购买少数站站票的方式实现购票。即购买某两个无剩余票站点之间的站票,使得用户前一段行程有座位,中间站一会,后一段行程也有座位。但要保证站票的时间不能太长。同车换乘是最优的方案,避免了换车的时间损失,同时有效利用车票的零散资源。此上的这些方案为层层递进的关系,在上一个方案无法进行下去时,才会进入到下一种方案的计算。这些数据是实时采集的,即可通过不同时间,多次计算获取购票方案。

2.3 算法

关于算法部分,要求计算建立标记起点、中间站点、终点数据信息。

某线路,起点为a0,终点为an 在起点到终点之间有a1,a2等站点,现在就需要建立一个车票信息数据库,具体如下:

(1)使用Python 爬虫技术,将a0→a1、a0→a2、a0→a3……a0→an-1、a0→an 并标记为:b01、b02、b03……b0n-1、b0n,数据包括:有票、具体张数、无票3 种,及相应的席位信息等;

(2)同理建立a1→a2、a1→a3……a1→an-1、a1→an 并标记为:b12、b13、b14……b1n-1、b1n,数据包括:有票、具体张数、无票3 种,及相应的席位信息等;

(3)最后建立an-1→an 并标记为:bn-1n,数据包括:有票、具体张数、无票3 种,及相应的席位信息等;

(4)数据共有:(n-1)+(n-2)+(n-3)+……+2+1=n(n-1)/2;

(5)数据拼接

①1 点换乘:在有票的条件下,查询b0m+bmn 的可行性,其中am 就是同车换乘中转站点;

②2 点换乘:在有票的条件下,查询b0m+bml+bln 的可行性,其中am、al 就是同车换乘中转站点;

③多点换乘:在有票的条件下,查询b0m+bml+……+bkn 的可行性,其中am、al……ak 就是同车换乘中转站点;

上述方法无法实现时,考虑“席位切换”的方式实现购票,即标记ba、bb、bc、bd 等信息,其中a(商务座)、b(一等座)、c(二等座)、d(站票)为席位种类,在数据拼接时,增加“席位切换”。可能得到如下信息:ba0m+bbml+……+bckn,其中am、al……ak 就是同车换乘中转站点;

上述方法无法实现时,考虑“少叠加换乘”的方式实现购票,即标记ba、bb、bc、bd 等信息,其中a(商务座)、b(一等座)、c(二等座)、d(站票)为席位种类,在数据拼接时,增加“少叠加换乘”。可能得到如下信息:ba0m+1+bbm-1l+……+bckn,其中am-1、am+1、al……ak 就是同车换乘中转站点;

上述方法无法实现时,考虑“少行程补票换乘”的方式实现购票,即标记ba、bb、bc、bd 等信息,其中a(商务座)、b(一等座)、c(二等座)、d(站票)为席位种类,在数据拼接时,增加“少叠加换乘”。可能得到如下信息:ba0m-1+bdm-1m+1+bbm+1l+……+bckn,其中am-1、am+1、al……ak 就是同车换乘中转站点;

(6)上述方法无法实现时,考虑“2 车或2 车以上换乘”的方式实现购票,首先选择中转车站(尽量选择同一车站点),再确定具体车次信息,必须考虑中转时间(目前很多车站提供换乘快速通道),车次晚点等因素。比如:“2 车换乘”就变成“2 个同车换乘”,再应用上述的“同车换乘”的方法实现分段购票。

同理,“2 车以上换乘”也就变成了“多个同车换乘”,再应用上述的“同车换乘”的方法实现分段购票。只是,换乘中转站点越多,耽误的换乘时间也就越多,其中不确定因素也就越多。

3 结论

当使用其他软件抢不到票时,其实并不是真正的没有车票了,而是还有很多碎片化的短程车票可用。Python 爬虫技术常规用于大数据统计、科研运算与研究中。从技术角度上,python 爬虫技术实现将起点车次、终点车次、中间站车次分解进行数据统计,采用神经网络多元算法实现购票。可以最大限度的利用火车运力,将零散的碎片票集成应用,达到全负荷运行状态。达到充分利用碎片化车票、节省人力物力、节能减排的目的。

猜你喜欢

中转站车次爬虫
利用网络爬虫技术验证房地产灰犀牛之说
调度集中系统车次号技术的研究
青春中转站
基于Python的网络爬虫和反爬虫技术研究
动车所车次号处理逻辑存在问题分析与对策
Folic acid attenuates high-fat diet-induced steatohepatitis via deacetylase SlRT1-dependent restoration of PPARα
大数据背景下校园舆情的爬虫应用研究
基于转运费用—DEA两阶段法的村镇垃圾转运效率研究
大数据环境下基于python的网络爬虫技术
八月一日夜车次徐州口占