You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何抓取指定筛选条件的网站乘客数据并保存为CSV文件

解决BTS乘客数据筛选丹佛(DEN)目的地的参数问题

问题原因

你当前代码的核心问题是请求参数不匹配网站表单的实际字段名,该网站的目的地机场筛选需要使用DestAirport和DestAirportList参数,而非AirportList;同时建议使用会话保持Cookie,避免因无会话导致筛选失效。

修正后的代码

import requests
import pandas as pd

# 创建会话,保持Cookie(部分网站需要会话才能正确处理表单提交)
session = requests.Session()

# 先访问目标页面,获取必要的会话信息
base_url = "https://www.transtats.bts.gov/Data_Elements.aspx?Data=1"
session.get(base_url)

# 正确的请求参数:指定目的地为DEN,航司保持默认所有
params = {
    "Data": "1",
    "Carrier": "All",
    "CarrierList": "All",
    "DestAirport": "DEN",          # 目的地机场代码
    "DestAirportList": "DEN",      # 对应表单的目的地列表参数
    "Submit": "Submit"             # 提交按钮参数
}

# 发送POST请求
response = session.post(base_url, data=params)

# 检查请求状态
if response.status_code == 200:
    print("请求成功,开始解析数据")
else:
    print(f"请求失败,状态码:{response.status_code}")
    exit()

# 解析HTML中的表格(优先匹配目标列名,避免索引错误)
dfs = pd.read_html(response.text)
target_df = None
for i, df in enumerate(dfs):
    if "Destination Airport" in df.columns:
        target_df = df
        print(f"找到目标表格,索引为{i}")
        break
# 如果未匹配到目标列,默认取最后一个表格
if not target_df:
    target_df = dfs[-1]
    print("未匹配到目标列名,使用最后一个表格")

# 查看数据基本信息
print(target_df.head())
print(target_df.info())

# 保存到CSV
file_path = r'C:\Users\harddrive\passenger_data_DEN.csv'
target_df.to_csv(file_path, index=False)
print(f"数据已保存到:{file_path}")

关键参数说明

  • DestAirport:指定目的地机场的代码,这里为DEN
  • DestAirportList:对应页面表单中目的地机场的列表选择参数,必须和DestAirport保持一致
  • 使用requests.Session():维持会话状态,确保网站能正确识别表单提交的上下文,避免筛选条件被忽略

内容的提问来源于stack exchange,提问作者user26311416

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 04:00:15