2024年最新最新12306抢票爬虫

环境


python 3.7

谷歌浏览器

chromedriver.exe(浏览器驱动程序,要与浏览器版本对应,并将其添加到环境变量或放到当前py文件所在目录下)

相关模块


time (用于某些地方对程序的强制等待)

datatime (用于获取当前时间)

selenium 3.1 自动化测试模块,这里用于操作浏览器)

思路


首先进行登录(支持手机扫码),登录完成进入页面之后,我们会看到有“温馨提示”的弹窗,即当前界面,我们需要处理第一次弹窗,

请添加图片描述

然后进入到菜单栏车票下的单程中(鼠标移动触发事件),到达当前页面,处理第二次弹窗

请添加图片描述

处理完后就是信息的输入,在这里日期的输入不是输入框,是鼠标点击,在代码中已处理,输入完成后,查询列车信息(我写的只能查询动车以及火车的二等座),如果有票,则预约,然后进入新的页面

  • 16
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python爬虫可以用于12306抢票,具体步骤如下: 1. 首先,需要安装selenium和chromedriver,selenium是一个自动化测试工具,chromedriver是一个控制Chrome浏览器的驱动程序。 ```python !pip install selenium ``` 2. 导入selenium和time模块,设置浏览器驱动路径和乘车日期等信息。 ```python from selenium import webdriver import time # 设置浏览器驱动路径 driver_path = 'chromedriver.exe' # 设置乘车日期 date = '2022-01-01' ``` 3. 打开Chrome浏览器,并访问12306官网。 ```python # 打开Chrome浏览器 driver = webdriver.Chrome(executable_path=driver_path) # 访问12306官网 driver.get('https://www.12306.cn/index/') ``` 4. 登录12306账号,输入用户名和密码,然后手动输入验证码。 ```python # 等待用户手动输入验证码 time.sleep(30) ``` 5. 在出发地和目的地输入框中输入相应的城市名称,然后选择乘车日期。 ```python # 输入出发地和目的地 driver.find_element_by_id('fromStationText').click() driver.find_element_by_id('fromStationText').clear() driver.find_element_by_id('fromStationText').send_keys('北京') driver.find_element_by_id('toStationText').click() driver.find_element_by_id('toStationText').clear() driver.find_element_by_id('toStationText').send_keys('上海') # 选择乘车日期 js = "document.getElementById('train_date').removeAttribute('readonly')" driver.execute_script(js) driver.find_element_by_id('train_date').clear() driver.find_element_by_id('train_date').send_keys(date) ``` 6. 点击查询按钮,等待页面加载完成。 ```python # 点击查询按钮 driver.find_element_by_id('search_one').click() # 等待页面加载完成 time.sleep(10) ``` 7. 选择车次和座位类型,然后点击预订按钮。 ```python # 选择车次和座位类型 driver.find_element_by_xpath('//tbody/tr[1]/td[13]/a').click() time.sleep(2) driver.find_element_by_xpath('//ul[@id="normal_passenger_id"]/li[1]/label') driver.find_element_by_id('submitOrder_id').click() ``` 8. 点击确认按钮,等待页面加载完成。 ```python # 点击确认按钮 driver.find_element_by_id('qr_submit_id').click() # 等待页面加载完成 time.sleep(10) ``` 9. 最后,可以通过邮件或短信等方式通知自己是否抢到了车票。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值