python抢票代码
1. 大家用python都做过什么
一起来看看Python语言的用途盘点~
1、抢票
大家出去旅游或者留学生放假需要买往返机票的时候,为了买到最低或相对低价的票,常常需要下好几个手机App,或者连续几天不停登录不同的网站来回比价!费时费力不说,有时候买完票发现还有更便宜的,这就很难受了。不过用Python(BeautifulSoup,Tinyurl,Googlevoice包)写个抓机票网站查询结果网页的程序,放到Amazon EC2的服务器上,每十五分钟抓一下网页的票价,低于某个价格就调用Google Voice的发短信功能把URL发条短信给自己抢票!同理,Python还可以用来抢火车票。相信国内异地工作or学习的朋友们都经历过,春运的票真的好难抢。GitHub上用Python抢票的项目在春运前就又重回到另了Top榜单。
2、画画
这里说的画画,不是真的然计算机可以直接进行绘画创作,而是用Python对图片进行艺术加工。说白了,就是通过Python语言的深度学习算法包去训练计算机模仿世界名画的风格。比如梵高的名作《向日葵》作为模板,在顺便选择一个待转化的图片,就能利用Python把普通的图片转化成大师的作品风格。听上去好像没有什么实际的用处,实际上可以为我们的生活增添不少艺术性。假以时日,随着Python在艺术绘画领域的发展,相信会为我们带来更大的惊喜!
3、数据可视化
Python已经成为数据分析的首选语言。对于像pandas,NumPy和matplotlib这样以数据为中心的库,任何熟悉Python语言的语法和规则的人都可以将其部署为处理,操作和可视化数据的强大工具。
4、自动化脚本
Python可以自动化的批量处理大量的数据,因此自动化脚本用 Python 来写是很爽的,那些频繁的、重复的、无脑的操作,你都可以自己写一个 Python 脚本让电脑帮你操作,可以节省你大量的时间。别人一个文件一个文件的操作,一条命令一条命令的执行。
5、web应用开发
在国内,豆瓣一开始就使用Python作为web开发基础语言,知乎的整个架构也是基于Python语言,这使得web开发这块在国内发展的很不错。 youtube 世界最大的视频网站也是Python开发的哦~还有非常出名的instagram 也是用Python开发的。因此,目前国内的Python开发岗位也一直在增加。
因此,掌握Python语言能做的事情实在是太多了!在未来,随着人工智能和大数据的发展,相信Python的应用会更加广泛。
2. 如何用python写一个简单的12306抢票软件
#coding=utf-8
from selenium import webdriver
from time import sleep
import traceback
TICKET_URI = 'https://kyfw.12306.cn/otn/leftTicket/init'
LOGIN_URI = 'https://kyfw.12306.cn/otn/login/init'
MY_URI = 'https://kyfw.12306.cn/otn/index/initMy12306'
LOGIN = u'登录'
from splinter.browser import Browser
from time import sleep
import traceback
TICKET_URI = 'https://kyfw.12306.cn/otn/leftTicket/init'
LOGIN_URI = 'https://kyfw.12306.cn/otn/login/init'
MY_URI = 'https://kyfw.12306.cn/otn/index/initMy12306'
LOGIN = 'login_user'
def login():
brw.find_element_by_id(LOGIN).click()
sleep(3)
uname = '[email protected]'
pwd = 'xxxyyyzzz'
brw.find_element_by_id('username').send_keys(uname)
sleep(1)
brw.find_element_by_id('password').send_keys(pwd)
sleep(1)
while True:
if brw.current_url != MY_URI:
sleep(1)
else:
break
def addCookie(cklist):
li = list()
for d in cklist:
if d['name'] == '_jc_save_toStation' or d['name'] == '_jc_save_toDate' or d['name'] == '_jc_save_fromStation':
li.append(d)
return li
def book():
global brw
brw = webdriver.Chrome()
brw.set_window_size(1366, 768)
brw.get(TICKET_URI)
sleep(3)
while brw.find_element_by_id(LOGIN):
login()
if brw.current_url == MY_URI:
break;
try:
brw.get(TICKET_URI)
sleep(2)
# set src
brw.find_element_by_id('fromStationText').clear()
brw.find_element_by_id('fromStationText').click()
brw.find_element_by_id('fromStationText').send_keys(u'合肥南')
sleep(3)
# set dst
brw.find_element_by_id('toStationText').clear()
brw.find_element_by_id('toStationText').click()
brw.find_element_by_id('toStationText').send_keys(u'武汉')
sleep(3)
# set left date
print('please click train date')
sleep(5)
cke = brw.get_cookies()
li = addCookie(cke)
for x in li:
brw.add_cookie(x)
brw.refresh()
count = 0
success = False
if not success:
while brw.current_url == TICKET_URI:
brw.find_element_by_id('query_ticket').click()
sleep(2)
print(u'第%d次刷新' % count)
count += 1
brw.find_element_by_partial_link_text('D3057')
except Exception as e:
print(traceback.print_exc())
if __name__ == "__main__":
book()
3. 如何用python写一个简单的12306抢票软件
我有用Python攻克12306最后一道防线,实现自动抢票的教程,
4. Python用selenium实现模拟登录,各种抢票脚本的第一步
selenium >>> pip install selenium==3.4.1
第一次登陆的时候,会帮助我记录我们的登陆信息
登陆成功之后 cookie会发生变化
假如我现在已经登陆过了,那么直接拿本地的登陆信息,直接登陆就可以了
调用登陆,并且刷新页面,改变登陆成功的标识
5. 我从github上下载了python12306的抢票程序,但运行时一堆错误,求各位大神帮帮忙哈
贴一下具体链接呢
还有github上的代码,一般star至少要几十个的,才有一定质量保证
6. Python:基于Python爬虫技术的抢票程序及其实现
临近放假,相信我们每天都在群聊里或者朋友圈看到一些帮忙抢火车票的信息。看到朋友们抢回家的车票这么辛( bei )苦( can ),结合圈里一些前辈的指点,抱着学习的心态用 Python 做了一个简单的自动化抢票程序,抢到票之后通过绑定的邮箱(比如 QQ )发通知。下面分享主要内容:
然后,开始使劲地码:
1. 定义自动购票的类(初始化属性)
2. 实现登录功能
3. 实现购票功能
4. 邮箱通知付款
还有,网络不好或者 12306 的服务器不稳定的时候,就会卡住,针对这种情况,系统会重复查询:
最后,祝大家都能顺利抢到票.
本文以转载于博客园小帝君的博客
7. 如何用python写一个简单的12306抢票软件
看看这个可以吗功能:1:全自动爬所有车站列表2:爬所有车站之间的所有车次,过滤重复,保存文件爬过程中保存文件遇到http异常,停止继续脚本代码[python]viewplain#coding:utf-8__author__='watsy'#城市对象classcityObject(object):def__init__(self,abbr_pinyin="",full_pinyin="",chinaname="",shortCode=""):self.abbr_pinyin=abbr_pinyinself.full_piyin=full_pinyinself.chinaname=chinanameself.shortCode=shortCode#火车classtrainObject(object):def__init__(self,tid="",code="",start_city="",start_time="",end_city="",end_time="",full_time=""):self.tid=tidself.code=codeself.start_city=start_cityself.start_time=start_timeself.end_city=end_cityself.end_time=end_timeself.full_time=full_timedefget_writestr(self):#return("%s,%s,%s,%s,%s,%s,%s")%(self.tid,self.code,self.start_city.encode('utf-8'),self.start_time,self.end_city.encode('utf-8'),self.end_time,self.full_time)str_return=self.tid+",";str_return+=self.code+",";str_return+=self.start_city+",";str_return+=self.start_time+",";str_return+=self.end_city+",";str_return+=self.end_time+",";str_return+=self.full_time;returnstr_return#火车列表classtrainModel(list):defisExist(self,train):forsub_traininself:ifsub_train.code==train.code:returnTruereturnFalsedefsave(self):train=self[-1]withopen(("%s.txt")%(train.code),"w")aswf:printtrain.get_writestr()wf.write(train.get_writestr().encode('utf-8'))#解析城市defparserCitys(data):parser_citys=[]fororiginal_cityindata:iforiginal_cityandlen(original_city)>1:split_city=original_city.split('|')parser_city=cityObject(split_city[0],split_city[3],split_city[1],split_city[2])parser_citys.append(parser_city)printlen(parser_citys)returnparser_citys#生成url地址defgetBookingTrainListUrl(start_code,end_code,day):strUrl=("/otsquery/query/queryRemanentTicketAction.do?method=queryLeftTicket&")strUrl+=("orderRequest.train_date=%s&")%(day)strUrl+=("orderRequest.from_station_telecode=%s&")%(start_code)strUrl+=("orderRequest.to_station_telecode=%s&")%(end_code)strUrl+=("orderRequest.train_no=&trainPassType=QB&trainClass=QB%23D%23Z%23T%23K%23QT%23&includeStudent=00&seatTypeAndNum=&orderRequest.start_time_str=00%3A00--24%3A00")returnstrUrltrains=trainModel()#解析预定车次列表defparser_booking_str(str_booking):json_book=json.loads(str_booking)datas=json_book['datas']ifdatasandlen(datas)>1:#printdatas.replace("","")trainlist=datas.replace("","").split("\\n")fortrain_strintrainlist:train_str_list=train_str.split(',')iflen(train_str_list)==17:str_id_and_code=train_str_list[1]str_start_city_and_time=train_str_list[2]str_end_city_and_time=train_str_list[3]str_full_time=train_str_list[4]#printstr_id_and_codestr_id=str_id_and_code[13:25]str_code=str_id_and_code[131:-7]#printstr_start_city_and_timeiflen(str_start_city_and_time)>50:str_start_city=str_start_city_and_time[43:-9]else:str_start_city=str_start_city_and_time[0:-9]str_start_time=str_start_city_and_time[-5:]#printstr_end_city_and_timeiflen(str_end_city_and_time)>50:str_end_city=str_end_city_and_time[42:-9]else:str_end_city=str_end_city_and_time[0:-9]str_end_time=str_end_city_and_time[-5:]tobj=trainObject(str_id,str_code,str_start_city,str_start_time,str_end_city,str_end_time,str_full_time)iftrains.isExist(tobj)==False:trains.append(tobj)trains.save()#打开城市列表页面u=urllib2.urlopen("mon/station_name.js?version=1.40")buffer=u.read()u.close()#获取列表buffer=buffer[20:-3]unformatter_citys=buffer.split('@')#得到城市parser_citys=parserCitys(unformatter_citys)city_length=len(parser_citys)today=datetime.date.today()torrow=datetime.timedelta(days=1)today=today+torrowday_str=("%s-%02d-%02d")%(today.year,int(today.month),int(today.day))print(day_str)strPath=os.getcwd()os.chdir("%s/train/"%strPath)foriinrange(1,city_length):forjinrange(0,len(parser_citys)-i):try:print("[%d%d]"%(i,j))sleep(0.09)strurl=getBookingTrainListUrl(parser_citys[i].shortCode,parser_citys[j].shortCode,day_str)url_add_header=urllib2.Request(strurl)url_add_header.add_header('X-Requested-With',"XMLHttpRequest")url_add_header.add_header('Referer',"/otsquery/query/queryRemanentTicketAction.do?method=init")url_add_header.add_header('Content-Type','application/x-www-form-urlencoded')url_add_header.add_header('Connection','keep-alive')resp=urllib2.urlopen(url_add_header)urlread=resp.read()resp.close()parser_booking_str(urlread)excepturllib2.HTTPErroraserr:print("error:[%s]url=[%s]")%(err,strurl)exit(1)os.chdir(strPath)printlen(trains)
8. 如何写抢票软件python实现
你自己的问题都不详细,别人怎么会给你详细的答案。 抢票软件一般也就是模拟浏览器发请求,当然纯粹模拟也会有很多问题,比如验证码,请求数等等,具体看你要实现什么效果。
9. 用python抢票犯法吗
犯法
用python抢购火车票是犯法的,乘客切记不要去以身试法。如果想要增加成功抢购到车票的几率,可以采用以下这些方式的:
1、在车票售卖的当天进行手动抢票,在车票开始售卖之前的3到5分钟时间进入到12306里面去等待。之后在车票售卖前30秒开始刷新售卖车票的页面,因为售卖车票的时间是不固定的,有可能会提前放票,一旦抢到车票后,就需要及时验证。
2、抢票期间必须要有一个不错的网络环境,并且手机弹出页面的速度跟别人对比快很多。还有刷新的手速要快,尽量是抢到车票后就能立刻验证,并且完成支付的。
3、首先乘客可以先在12306软件上预约抢票,如果没有余票就去提交候补车票订单。候补的速度要快,排名越前成功的几率就会更高,另外还能在第三方购票软件上购买加速包一起抢购
如果不想要购买加速包,就能使用多个购票软件一起抢票,比如携程、智行、途牛、同程等。如果其中一个订单成功抢到票,要及时取消其他抢票订单,不然退票是需要手续费的。
正常情况下,列车发车之前的2天时间会有少数乘客办理退票手续。此时乘客可以经常去刷新下售卖车票的页面,也还是有可能会抢到车票的。即便乘客已经提交了候补车票的订单,还是要经常手动刷新购票页面,从而提升购票成功的几率。
法律依据
《刑法》
第二百二十五条
规定违反国家规定,有该条所列非法经营行为之
一,扰乱市场秩序的犯罪。这些非法经营行为包括:(一)未经许可经营法律、行政法规规定的专营、专卖物品或者其他限制买卖的物品的;(二)买卖进出口许可证、进出口原产地证明以及其他法律、行政法规规定的经营许可证或者批准文件的;(三)未经国家有关主管部门批准非法经营证券、期货、保险业务的,或者非法从事资金支付结算业务的;(四)其他严重扰乱市场秩序的非法经营行为。
第二百八十五条
规定提供侵入、非法控制计算机信息系统程序、工具罪是指提供专门用于侵入、非法控制计算机信息系统的程序、工具,或者明知他人实施侵入、非法控制计算机信息系统的违法犯罪行为而为其提供程序、工具,情节严重的行为。该罪在客观方面表现为提供专门侵入、非法控制计算机信息系统的程序、工具,或者明知他人实施侵入、非法控制计算机信息系统的违法犯罪行为而为其提供程序、工具,情节严重的行为。
10. 如何用python写一个简单的12306抢票软件
所谓抢票实际上是在开始放票的一瞬间第一个发出请求并点击预订。作为程序员的我们,完全可以让程序来做这件事。我花了几个小时写了一个demo。用到的工具集有:Python3.6, Selenium, chromdriver. 程序本身就是流程性的东西,没有什么可介绍的。代码如下
#
coding=utf-8
from
selenium import
webdriver
from
time import
sleep
import
traceback
TICKET_URI
= '
https://kyfw.12306.cn/otn/leftTicket/init
'
LOGIN_URI
= '
https://kyfw.12306.cn/otn/login/init
'
MY_URI
= '
https://kyfw.12306.cn/otn/index/initMy12306
'
LOGIN
= u'
登录
'
from
splinter.browser import
Browser
from
time import
sleep
import
traceback
TICKET_URI
= '
https://kyfw.12306.cn/otn/leftTicket/init
'
LOGIN_URI
= '
https://kyfw.12306.cn/otn/login/init
'
MY_URI
= '
https://kyfw.12306.cn/otn/index/initMy12306
'
LOGIN
= '
login_user
'
def
login():
brw.find_element_by_id(LOGIN).click()
sleep(
3)
uname
= '123456789
@qq.com
'
pwd
= 'xxxyyyzzz
'
brw.find_element_by_id(
'
username
'
).send_keys(uname)
sleep(
1)
brw.find_