python开发12306抢票_如何利用 Python 实现12306抢票?

生苦短,我用 python。

作为一种“胶水语言”,python 为无数码农带来了便利;同时,越来越多的 python 工程师被标榜为“高薪党”;“全民python”的时代渐渐到来,你准备好了吗?

下面,就让我们用一个实例,具体地感受一下 python 的魅力吧!

前期准备:Python版本:Python3

运行平台:Windows

IDE:PyCharm

浏览器:Chrome

项目介绍:

本项目利用 python 实现对 12306 网站的爬取,并查询相应的时间、座次类型、剩余票数等,方便朋友们抢票。众所周知,12306是一个安全级别比较高的网站,要想爬去绝非易事,特别是对相应验证码的处理,足以让一般的 python 工程师望而却步了。今天,我们就来简单的爬取一下这个神奇的网站。

网站信息:

12306 官网(注:本项目所获取的信息全部为网上公开的可取信息)

具体步骤:

首先,我们导入第三方库import requests

之后,写一个函数def check():

接下来就往函数里写程序吧!

我们先来获取网页信息img01

首先,我们发送请求。response =requests.get('https://kyfw.12306.cn/otn/leftTicket/queryA?leftTicketDTO.train_date=2018-09-23&leftTicketDTO.from_station=BJP&leftTicketDTO.to_station=TJP&purpose_codes=ADULT')

由于显示编码格式与原格式不同,导致无法正确的处理所获去的数据;于是我们先转换一下编码格式。img02#将显示编码与原编码格式统一

response.encoding = 'utf-8'

为方便接下来的数据处理,我们需将数据转换成字典格式#转换成字典格式

result = response.json()

#这里通过调用控制台,找到相应数据,并一层层地追踪

return result['data']['result']

我们现在来编写序号number= 0

#用split将数据进行切割,方便后续查找

for i in check():

tem_list= i.split('|')

接下来,我们得查看各个坐次所对应的序号了;可以在调试的时候输出查值#查找各坐次

#for n in tem_list:

#print(nu,n)

#nu +=1

#nu =0

#print(i)

#注:以上内容只供调试使用

通过调试程序,我们找到相应信息的序号#23 =软卧

#26 = 无座

#28 = 硬卧

#29 = 硬座

#30 = 一等座

#31 = 二等座

#32 = 商务座

最后,只需找到你需要买的座次就行了。tem_list = i.split('|')

if tem_list[32] != '无' and tem_list[32] != '':

print(tem_list[3],'有票')

else:

print(tem_list[3],'无票')

好了,朋友们,是时候拿去试一下了!

你可能感兴趣的:(python开发12306抢票)