这篇文章主要介绍了春节到了教你使用python来抢票回家,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
不知不觉,一年一度的春运抢票大幕已经拉开,想快速抢到回家的车票吗?作为程序员,这些技术手段,你一定要知道。
为了让大家更快捷更便利的抢火车票,各种各样的抢票软件应需而生,这类软件大部分都是付费抢票的机制。
作为程序员,如何用技术手段抢到回家的票吗?来看看用Python写的抢票脚本。
手把手教你用Python抢票回家过年
环境介绍
-
<李> windows 8.1 李>
<李> python3.6.1李>
<李> firefox的插件geckodriver.exe李>
<强>操作步骤强>
<强>引入要的模块强>
从硒进口webdriver #控制浏览器 从selenium.webdriver.common.keys导入密钥#用于给元素赋值 导入时间#时间模块 从selenium.webdriver.support。选择import选择#控制下拉框模块 从进口selenium.webdriver.common.by #寻找元素模块 从selenium.webdriver.support。ui进口WebDriverWait #“显示等待“模块 从selenium.webdriver。支持导入expected_conditions EC #等待条件模块
<>强登陆模块强>
首先需要选择使用的浏览器,此处以火狐浏览器为例,下载:geckodriver。exe .
提到的电台。三种可以直接看这个:
车站信息:
https://kyfw.12306.cn/otn/resources/js/framework/station_name.js& # 63; station_version=1.9042
将geckodriver。exe放到python。exe同级目录下即可(如果有报错的情况下,放一个该文件到与firefox。exe同级目录下,并添加环境变量)
#可以用输入,也可以直接放入到后面的用户名:密码输入框中 #可以利用标准输入进行批量的操作,此处以个人抢票操作为例 #用户名=str(输入(“请输入你的用户名:")) #密码=str(输入(“请输入你的密码:'))#这两行可以暂时忽略 火狐浏览器=webdriver.Firefox() #驱动浏览器 browser.get (“https://kyfw.12306.cn/otn/login/init”) #启动浏览器后进入该链接下 browser.find_element_by_id(“用户名”).clear () browser.find_element_by_id .send_keys(“用户名”)(“xxxxx”) # xxxxx更换为用户名 browser.find_element_by_id .send_keys(“密码”)(“xxxxx”) # xxxxx更换为密码 time . sleep(10) #此时验证码自行点击,该处设置10秒延迟,可以自己设置 试一试: browser.find_element_by_id (loginSub) .click() #点击登陆操作,该id为登陆按钮 #或者browser.find_element_by_link_text(“登陆”).click() #标签显示的名称 除了: 浏览器。find_element_by_class_name (“touclick-bgimg touclick-reload touclick-reload-normal”) .click() #试中验证码输入点错了会在此处刷新一次 time . sleep(20) #第二次输入验证码前等待20秒,可以自己设置,第一次输入无误直接跳过 browser.find_element_by_id (loginSub) .click() #重新输入验证码后的点击登陆
<强>跳转模块强>
#默认跳转到首页 time . sleep(2) #此处一般无需设置时间等,待调试代码时使用 clickReserve=browser.find_element_by_link_text('车票预订的).click() #跳转到车票预定页面,该页面可以查询票 time . sleep(2) #出发地点和到达地点设置 #此处价值值为出发时刻的地点,人民党表示北京,更改值值在页面上不加载,基本不耗时间,从页面中也看不到出发地和目的地 #此处内容以爬取,保存在。txt中,每行表示一个地址,打开文档ctrl + F查找即可 jsf=' var=. getelementbyid (fromStation ");。值=" https://www.yisu.com/zixun/BJP " " #此处将人民党更换为你需要的出发地址,价值值在以爬取到stations.txt中,自行查看 browser.execute_script (jsf) jst=' var=. getelementbyid (toStation ");。值=" https://www.yisu.com/zixun/LZJ " " #终点,同上方法 browser.execute_script (jst) js=" . getelementbyid (train_date) .removeAttribute(“只读”)”#时间选择时默认为只读,通过JS移除只读属性 browser.execute_script (js) #执行js语句 browser.find_element_by_id (train_date) .clear() #时间元素中默认有提示字,需要先清空 browser.find_element_by_id (train_date) .send_keys(2018-02-01) #按照改格式输入需要查询的时间 搜索=browser.find_element_by_id (query_ticket) .click() #输入好信息时点击查询,该处存在成人票和学生票,默认是成人票,如果购买,对学生票处执行以下语句即可: # browser.find_element_by_id (xxxx) .click() #对于id还是类或其它自行选择春节到了教你使用python来抢票回家