尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

12306爬取基本车次信息(需下载chromedriver)

12306爬取基本车次信息(需下载chromedriver)
📅 发布时间:2026/6/20 2:21:17

from selenium import webdriver
from selenium.webdriver.common.by import By
import re
import time
import csv
import pandas as pd
import sys
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
import os

def request(fromCity,toCity):
def getDriver():
chrome_options = Options()
chrome_options.add_argument("--no-sandbox")#禁用沙盒模式
chrome_options.add_argument("--disable-dev-shm-usage")#禁用/dev/shm使用
#chrome_options.add_argument("--headless")#浏览器隐藏运行
#设置选项参数
service = Service("chromedriver.exe")
driver = webdriver.Chrome(service=service,options=chrome_options)#修改为自己电脑中chromedriver的路径
return driver

def downhandle(ccity):pattern = re.compile(r"[^\u4e00-\u9fa5]")#剔除非汉字模式for i in range(0,6):try:getCity = driver.find_element(By.ID,"citem_%d"%(i))#获取下拉框选定城市select=re.sub(pattern,"",getCity.text)#提取中文城市名if select==ccity:getCity.click()#获取城市名breakexcept Exception:pass##下拉框城市名获取处理
dateTime = time.strftime("%m-%d",time.localtime())#获取当前日期
url = "https://kyfw.12306.cn/otn/leftTicket/init?linktypeid=dc&fs=,SHH&ts=,TJP&date=2024-%s&flag=N,N,Y"%dateTime 
driver = getDriver()
driver.get(url)driver.find_element(By.ID,"fromStationText").clear()
driver.find_element(By.ID,"toStationText").clear()
##清除文本框driver.find_element(By.ID,"fromStationText").send_keys(fromCity)#发送出发城市
time.sleep(0.2)#等待下拉框加载选择
downhandle(fromCity)
driver.find_element(By.ID,"toStationText").send_keys(toCity)#发送目的城市
time.sleep(0.2)#..
downhandle(toCity)
time.sleep(0.5)
driver.find_element(By.ID,"query_ticket").click()#点击查询
time.sleep(0.2)
##城市车次查询allNumbers=[]#车次名列表
Starts=[]#起点站列表
Terminals=[]#到达站列表
startTimes=[]#出发时间列表
endTimes=[]#到达时间列表
totalTime=[]#历时列表
try:numbercount = len(driver.find_elements(By.CLASS_NAME,"number"))#获取车次总数i=0while(numbercount>i):time.sleep(0.2)number = driver.find_elements(By.XPATH,"//a[@class='number']")[i].text#获取车次名start = driver.find_elements(By.XPATH,"//div[@class='cdz']")[i].text#获取起点站名terminal = (driver.find_elements(By.XPATH,"//div[@class='cdz']")[i].text).replace(start,"")#获取到达站名startT = driver.find_elements(By.XPATH,"//div[@class='cds']")[i].text#获取出发时间endT = (driver.find_elements(By.XPATH,"//div[@class='cds']")[i].text).replace(startT,"")#获取到达时间total = driver.find_elements(By.XPATH,"//div[@class='ls']")[i].text#获取历时allNumbers.append(number)#添加车次名Starts.append(start)#添加起点站名Terminals.append(terminal)#添加到达站名startTimes.append(startT)#添加出发时间endTimes.append(endT)#添加到达时间totalTime.append(total)#添加历时i+=1
except Exception:passwith open("data.csv","w+",encoding="utf-8"):#创建csv文件pass
data = {"车次":allNumbers,"出发站":Starts,"到达站":Terminals,"出发时间":startTimes,"到达时间":endTimes,"历时:":totalTime}
dataFrame = pd.DataFrame(data)
dataFrame.to_csv(r"data.csv",encoding="utf_8_sig")
print("已生成车次信息xlsx表格!")
time.sleep(1)
sys.exit()##按列写入车次数据

def main():
while True:
fromCity=input("请输入起点站:")
toCity=input("请输入到达站:")
if fromCity != "" and toCity != "":
request(fromCity,toCity)
else:
print("站名不能为空!")
#获取城市名

if name == "main":
main()

相关新闻

  • Flask集成MCP的AI Agent
  • 深入解析:OpenAI 新推 GPT-5-Codex-Mini:一款针对开发者的轻量级编码助手
  • rustfs

最新新闻

  • ComfyUI TTP Toolset:3步掌握8K超分辨率图像分块处理技术,普通电脑也能轻松实现AI图像增强
  • LPC3130/3131 ARM9微控制器:多层AHB总线与引脚复用的嵌入式设计精要
  • 2026衡水2026正规漏水检测维修公司精选口碑榜TOP5权威推荐-精准定位检测漏水点-专业防水补漏堵漏维修、卫生间/厨房/屋顶/天沟/地下室/阳台防水漏水检测维修 - 安佳防水
  • 3种智能编排策略重构AI工作流创作效率
  • PPO算法在大语言模型RLHF训练中的工程实践与调参指南
  • 武汉南华光电职业技术学校2026年最新招生简章 - 武汉中职最新信息发布

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号