使用python爬取火车票情况

通过以下步骤使用 Python 爬取火车票情况:使用 requests 库获取火车票信息。使用 BeautifulSoup 解析 HTML 响应提取火车票信息。从解析后的 HTML 中提取所需信息,如出发地、目的地、时间、票价等。将爬取到的火车票信息存储到数据库、文件或展示在控制台中。

使用 Python 爬取火车票情况

如何使用 Python 爬取火车票情况?

使用 Python 爬取火车票情况可以通过以下步骤完成:

1. 获取火车票信息

使用 Python 的 requests 库向火车票查询网站发送请求,获取火车票信息。例如:

import requests

url = 'https://www.12306.cn/index/'
response = requests.get(url)

2. 解析火车票信息

使用 BeautifulSoup 等库解析 HTML 响应,提取火车票相关信息。例如:

from bs4 import BeautifulSoup

soup = BeautifulSoup(response.text, 'html.parser')
trains = soup.find_all('tr', class_='train-list-item')

3. 提取所需信息

从解析后的 HTML 信息中提取所需信息,如出发地、目的地、出发时间、到达时间、票价等。例如:

for train in trains:
    departure_station = train.find('td', class_='station-start').text
    destination_station = train.find('td', class_='station-end').text
    departure_time = train.find('td', class_='departure-time').text
    arrival_time = train.find('td', class_='arrive-time').text
    price = train.find('td', class_='price').text
    print(f'{departure_station} -> {destination_station}: {departure_time} -> {arrival_time}, {price}')

4. 存储或展示火车票信息

将爬取到的火车票信息存储到数据库、文件或直接在控制台中展示。例如:

# 存储到数据库
import sqlite3

connection = sqlite3.connect('train_tickets.db')
cursor = connection.cursor()
cursor.execute("CREATE TABLE IF NOT EXISTS tickets (departure_station TEXT, destination_station TEXT, departure_time TEXT, arrival_time TEXT, price TEXT)")
for train in trains:
    cursor.execute("INSERT INTO tickets (departure_station, destination_station, departure_time, arrival_time, price) VALUES (?, ?, ?, ?, ?)", (departure_station, destination_station, departure_time, arrival_time, price))
connection.commit()
cursor.close()
connection.close()

# 在控制台中展示
for train in trains:
    print(f'{departure_station} -> {destination_station}: {departure_time} -> {arrival_time}, {price}')

以上就是使用python爬取火车票情况的详细内容,更多请关注昆居客【www.kunjuke.com】。

相关推荐:

12306怎么领取积分兑换车票 12306会员积分使用方法【攻略】

未成功领取积分兑换车票的原因有四:未激活铁路畅行会员、可用积分不足10000分、未选择带“兑”字标识车次、支付时未点“积分支付”;须依次完成激活、攒够有效积分、APP/网站/窗口三路径中任一方式按步骤操作。 如果您已注册12306账户但尚未成功领取积分兑换车票,可能是因为未完成铁路畅行会员激活、可用积分未达10000分门槛、未识别带“兑”字标识的可兑列车,或支付环节未选择“积分支付”。以下是完整可...

12306火车票查询身份证购票信息_12306实名制车票状态核对流程

12306实名制车票状态及身份证信息核验需按五步规范操作:一、登录账户进入“我的12306”→“乘车人管理”;二、确认身份证核验状态为“已通过”;三、通过“订单查询”核对证件号码与实名核验状态;四、用“行程信息提示”扫码验证客票真实性;五、拨打12306人工客服核查后台核验日志。 如果您在12306官网或App中查询火车票时,发现身份证购票信息与实际不符,或需确认实名制车票状态是否有效、是否已核验...

如何在Python中为测试用例添加自定义标记_通过pytest.mark进行分类执行

pytest.mark 必须作为装饰器直接作用于测试函数或类,不可写在函数外部;可叠加多个标记,执行时用 -m "mark1 and mark2" 等布尔表达式筛选;未注册标记会触发警告,需在 pytest.ini 或 pyproject.toml 中声明以避免。 pytest.mark 能不能直接用在函数外面 不能。所有 pytest.mark 必须装饰在测试函数或类上,写在函数定义之外会报 S...
· Python · 110422

如何在Python中构建树状结构的递归生成器_使用yield from简化递归代码

yield from 在树遍历中省去了手动展开子生成器的繁琐与风险,自动处理委托调用、异常传播、StopIteration 捕获及协程方法转发,确保扁平化输出和行为一致性。 yield from 在树遍历中到底省了什么 直接说结论:yield from 不是语法糖,它把递归生成器的“委托调用”从手动循环 + yield 拆解成一条语句,避免了中间迭代器被提前耗尽、异常传播断裂、或 StopIter...
· Python · 279560

如何解决Python中的UnboundLocalError局部变量引用错误_使用global或nonlocal关键字声明

Python函数内同名变量报UnboundLocalError,因编译期将赋值变量标记为局部,读取在赋值前则出错;global用于模块级变量,nonlocal用于最近外层函数变量,二者不可混用且需提前声明。 为什么在函数里修改同名变量会报 UnboundLocalError Python 在编译函数时,只要看到某个变量在函数体内有赋值操作(哪怕只在 if 分支里),就会把它标记为局部变量。之后如果...
· Python · 264831

为什么Python脚本内存占用居高不下_使用objgraph与gc模块排查泄露

Python内存泄漏主因是对象被隐性持有而非未调gc.collect(),可用objgraph.show_growth()定位异常增长类型,再用gc.get_referrers()逆向追踪强引用源,并结合RSS监控与gc调试确认真实泄漏。 Python 脚本内存持续上涨,大概率不是“没调 gc.collect()”,而是对象根本没被识别为可回收——比如被全局容器悄悄持有、含 __del__ 的循环...
· Python · 292177

如何在Python Flask中集成Click命令行工具_使用app.cli.command

app.cli.command命令不出现的主因是Flask实例未完成初始化或注册时机过早;需确保在create_app()返回后注册,且装饰器顺序为@app.cli.command在上、@click.option等在下,同时避免顶层导入时执行注册。 为什么 app.cli.command 注册的命令不出现? 最常见原因是 Flask 应用实例未正确初始化 CLI 上下文,或者命令注册时机早于 ap...
· Python · 14339

为什么Python Tkinter Canvas保存的图片是空白_使用ImageGrab截取组件

Canvas无法直接保存为图片,需用ImageGrab截屏并精确计算坐标,Windows高DPI下须启用DPI感知并缩放坐标;更可靠方案是用PIL重绘所有元素。 Canvas 本身不支持直接保存为图片文件,所谓“保存空白”不是 bug,而是你根本没在保存 Canvas 的内容 Canvas 没有内置 save() 或 export() 方法 Tkinter 的 Canvas 是一个绘图容器,它只负...
· Python · 134920