【Python】selenium项目实战:从12306网站获取特定时间段二等座有票的车次

该文章介绍了一个使用Python和Selenium库抓取12306网站上从南京到上海,第二天发车时间为06:00-12:00之间所有有二等座的车次信息的项目。通过设置查询条件,定位页面元素,最终找到并打印出所有符合条件的车次。
摘要由CSDN通过智能技术生成

一、项目背景

工具: python+pycharm+selenium
12306网址: https://kyfw.12306.cn/otn/leftTicket/init?linktypeid=dc
出发地: 南京
目的地: 上海
发车日期: 当天日期的第二天
发车时间: 06:00–12:00
目的: 打印所有二等座有座的车次

二、页面查找

1、查询条件

在这里插入图片描述

2、定位有二等座的元素

在这里插入图片描述
id="queryLeftTable"标签下的第4个td标签下的符合class=yes的元素,xpath://*[@id="queryLeftTable"]//td[4][@class="yes"]

3、定位有二等座的车次信息

在这里插入图片描述
位于第2步中元素的上一级tr标签下的第1个td标签下的a标签内,xpath://*[@id="queryLeftTable"]//td[4][@class="yes"]/../td[1]//a

4、Ctrl+F检验xpath查找的车次

在这里插入图片描述
查找成功,二等座有座的车次数量为30。

三、代码实现

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select

driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.get("https://kyfw.12306.cn/otn/leftTicket/init?linktypeid=dc")
# 需点击出发地输入框再进行输入
ele = driver.find_element(By.ID,"fromStationText")
ele.click()
# 输入出发地(需要按回车键确定)
ele.send_keys("南京\n")

# 需点击目的地输入框再进行输入
ele1 = driver.find_element(By.ID,"toStationText")
ele1.click()
# 输入目的地(需要按回车键确定)
ele1.send_keys("上海\n")

# 选择发车时段
select = Select(driver.find_element(By.ID,"cc_start_time"))
select.select_by_visible_text("06:00--12:00")

# 选择发车时间-当前日期第二天
driver.find_element(By.XPATH,'//*[@id="date_range"]//li[2]').click()

# 选取二等座有座的车次信息
trains = ele2 = driver.find_elements(By.XPATH,'//*[@id="queryLeftTable"]//td[4][@class="yes"]/../td[1]//a')

# 输出二等座有座的车次数量
print("二等座有座的车次数量为:")
print(len(trains))

# 输出二等座有座的车次
print("二等座有座的车次分别为:")
for train in trains:
    print(train.text)
driver.quit()

运行结果如下:
在这里插入图片描述
二等座有座的车次数量和车次信息符合页面查找结果,至此完成该项目。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值