PYTHON selenium抓取12306,出发日为NAN?

刚学1个多月的小白,比着《150讲轻松搞定Python网络爬虫》后面的selenium实战做的
结果卡在《实战-查找余票》这里了

原视频中很轻松的就完成了北京-长沙的查询,我这却卡在出发日这里,只要是用selenium选择出发日,就会变成不在预售时间内,然后打开出发日选择框,发现全是NAN(如图)
在这里插入图片描述
在这里插入图片描述
如果不用selenium,或者是手动刷新下selenium打开的出发日页面,都可以正常选择查询,研究一天了也没明白啥情况
个人怀疑是12306的反爬?想用行为链模拟下手动操作,结果也不太懂没搞出来,闷了2天了郁闷死了,求解!

在这里插入图片描述

下面是根据《150讲轻松搞定Python网络爬虫》-《实战-查找余票》截止的代码,视频中完全可以运行。

import csv
import time

import selenium.webdriver.common.action_chains
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC


driver = webdriver.Chrome(executable_path="D:\Chrome and selenium\chromedriver_win32\chromedriver.exe")

class trainspider(object):
    login_url='https://kyfw.12306.cn/otn/resources/login.html'
    personal_url='https://kyfw.12306.cn/otn/view/index.html'
    left_ticket_url='https://kyfw.12306.cn/otn/leftTicket/init?linktypeid=dc'
    #初始化类的所有数据
    def __init__(self,from_station,to_station,train_date):
        self.from_station=from_station
        self.to_station=to_station
        self.train_date=train_date

        # 创建字典,将键值与代号对应
        self.station_codes={}
        #初始化站点所对应的代号
        self.init_station_code()


    def init_station_code(self):
        with open('stations.csv', 'r', encoding='utf-8') as fp:
            reader = csv.DictReader(fp)
            for line in reader:
                name = line['name']
                code = line['code']
                self.station_codes[name] = code


    def login(self):
        driver.get(self.login_url)
        WebDriverWait(driver,1000).until(
            EC.url_contains(self.personal_url)
        )
        print('登陆成功啦!')

    def search_left_ticket(self):
        driver.get(self.left_ticket_url)

        #点掉疫情弹窗
        warning_btn=driver.find_element_by_id('qd_closeDefaultWarningWindowDialog_id')
        warning_btn.click()

        #出发地
        from_station_input=driver.find_element_by_id('fromStation')
        from_station_code=self.station_codes[self.from_station]
        driver.execute_script("arguments[0].value='%s'"%from_station_code,from_station_input)
        print(self.from_station,from_station_code)

        #目的地
        to_station_input=driver.find_element_by_id('toStation')
        to_station_code=self.station_codes[self.to_station]
        driver.execute_script("arguments[0].value='%s'"%to_station_code,to_station_input)
        print(self.to_station,to_station_code)

        #出发时间
        train_date_input=driver.find_element_by_id('train_date')
        driver.execute_script("arguments[0].value='%s'"%self.train_date,train_date_input)

        #点击查询
        search_btn=driver.find_element_by_id('query_ticket')
        search_btn.click()

    def run(self):
        self.login()
        self.search_left_ticket()


def main():
    spider=trainspider('北京','长沙','2021-6-12')
    spider.run()


if __name__ == '__main__':
    main()






driver = webdriver.Chrome(executable_path="D:\Chrome and selenium\chromedriver_win32\chromedriver.exe")

这行代码的路径符合你自己的路径吗,你是不是直接按教程写的。

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632