python+selenium 12306自动购票
介绍:用python+selenium实现12306自动购票,登录验证码暂不知如何绕过,想通过传cookie,但试了下不行,望各位指点
12306自动购票视图
1.手动扫码登录
2.查询指定日期
3.等待付款
代码
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片
.
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.action_chains import ActionChains
browser = webdriver.Firefox()
url="https://kyfw.12306.cn/otn/"
browser.get(url)
# 等待扫码登录
sleep(10)
# 点击确认
browser.find_element_by_xpath("//a[@class='btn btn-primary ok']").click()
# 点击首页
browser.find_element_by_xpath("//li[@id='J-index']//a[@name='g_href']").click()
sleep(5)
# 点击出发点
browser.find_element_by_xpath("//input[@id='fromStationText']").click()
# 点击成都
browser.find_element_by_xpath("/html/body/div[9]/div/div/div/div/ul[2]/li[7]").click()
# browser.find_element_by_xpath("//input[@id='fromStationText']").send_keys("成都")
# 点击到达地
browser.find_element_by_xpath("//input[@id='toStationText']").click()
# browser.find_element_by_xpath("//input[@id='toStationText']").send_keys("北京")
# 点击北京
browser.find_element_by_xpath("/html/body/div[9]/div/div/div/div/ul[2]/li[1]").click()
# 点击搜索
browser.find_element_by_xpath('//*[@id="search_one"]').click()
sleep(5)
# 切换到当前窗口
num=browser.window_handles
# 获取当前页句柄
print(num)
browser.switch_to_window(num[1])
sleep(5)
# 选择日期控件
browser.find_element_by_xpath("//span[@id='date_icon_1']").click()
sleep(2)
# 指定日期
browser.find_element_by_xpath("//div[1]//div[2]//div[12]//div[1]").click()
sleep(2)
# 点击查询
browser.find_element_by_xpath("//a[@id='query_ticket']").click()
sleep(5)
# 点击G308 预定
browser.find_element_by_xpath("//tr[@id='ticket_760000G3080E']//a[contains(@class,'btn72')]").click()
sleep(5)
# 勾选乘车人
browser.find_element_by_xpath("//li[1]//label[1]").click()
sleep(2)
# 点击提交
browser.find_element_by_xpath("//a[@id='submitOrder_id']").click()
# 等待确认付款
流程图
B站演示
链接: 点我看效果.
ps:第一次发,往多指点,多包含