美文网首页selenium知识点整理&汇总
Selenium学习006-查询12306列车

Selenium学习006-查询12306列车

作者: 残阳夕露 | 来源:发表于2018-07-26 23:59 被阅读48次

    Selenium学习笔记目录

    查询有票的列车,并输出列车车次

      1. 要求
      • 南京南-杭州东
      • 当前时间的第二天
      • 0600-1200
      • 二等座
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    try:
        driver = webdriver.Chrome()
        driver.get('https://kyfw.12306.cn/otn/leftTicket/init')
        driver.implicitly_wait((10))
    
        # 出发地
        driver.find_element_by_id('fromStationText').click() # 点击操作用于清空默认置灰的文字
        driver.find_element_by_id('fromStationText').send_keys('南京南')
        driver.find_element_by_id('fromStationText').send_keys(Keys.ENTER)  # 模拟键盘enter
    
        # 目的地
        driver.find_element_by_id('toStationText').click()
        driver.find_element_by_id('toStationText').send_keys('杭州东')
        driver.find_element_by_id('toStationText').send_keys(Keys.ENTER)  # 模拟键盘enter
    
        # 选择时间段
        driver.find_element_by_id('cc_start_time').click()
        driver.find_element_by_xpath("//*[@id='cc_start_time']/option[@value='06001200']").click()
    
        # 选择日期-->自动查询出结果
        driver.find_element_by_xpath(("//*[@id='date_range']/ul/li[2]")).click()
    
        # # 收集数据--方法一(本人首次做出来时使用的方法)
        # with_ticket_trains = [] # 有票的车次
        # without_ticket_trains =[] # 无票的车次
        # all_trains_info = driver.find_elements_by_xpath("//*[@id='queryLeftTable']/tr/td[4]")
        # for one_train_info in all_trains_info:
        #     train_number = one_train_info.find_element_by_xpath("../td[1]//*[@class='number']").text.strip()  # 查找车次
        #     if one_train_info.text in ('--', '无'): # 判断是否有票
        #         without_ticket_trains.append(train_number)
        #     else:
        #         with_ticket_trains.append(train_number)
        # # 打印出有票的列车车次
        # if len(with_ticket_trains) == 0:
        #     print('您所选的区间及时间范围内所有列车均已无票')
        # else:
        #     print('以下列车还有票:')
        #     for i in with_ticket_trains:
        #         print(f'{i:>6}')
    
        # 收集数据--方法二(后期发现只有有票的才含有class属性,代码如下)
        all_trains_info = driver.find_elements_by_xpath("//*[@id='queryLeftTable']/tr/td[4][@class]/../td[1]//a")
        for one in all_trains_info:
            print(one.text)
    
    
    finally:
        driver.quit()
    
      1. 结果
      1. 点击查看补充知识本文采用其他方法实现功能,暂未涉及链接中介绍的方法,但此方法很实用

    相关文章

      网友评论

        本文标题:Selenium学习006-查询12306列车

        本文链接:https://www.haomeiwen.com/subject/wngimftx.html