python

如何用python抢票

人生苦短,我用python;作为一种”胶水语言“,python为无数码农带来了便利;同时,越来越多的python工程师被标榜为”高薪党”;“全民python"的时代渐渐到来,你准备好了吗下面,就让我们用一个实例,具体地感受一下python的魅力吧

前期准备:

1.Python版本:Python3

2.运行平台:Windows

3.IDE:PyCharm

4.浏览器:Chrome

项目名称:

《python实现12306抢票》

项目介绍:

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

网站信息:

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

具体步骤:

首先,我们导入第三方库


import requests

之后,我们写一个函数


def check():

之后,就往函数里写程序吧

我们先来获取网页信息

python

首先,我们发送请求


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')

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

python


#将显示编码与原编码格式统一

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],'无票') 

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