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():
之后,就往函数里写程序吧
我们先来获取网页信息
首先,我们发送请求
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')
由于显示编码格式与原格式不同,导致无法正确的处理所获去的数据;下面,我们先转换一下编码格式
#将显示编码与原编码格式统一
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],'无票')
好了,朋友们,是时候拿去试一下了