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

基于Python爬取NOAA站点美国多县近3年日出日落数据的技术求助

爬取NOAA Solcalc日出日落数据的实现方案

1. 准备坐标数据

先把你手上的美国各县坐标整理成CSV文件(命名为counties_coords.csv),格式示例如下:

latitude,longitude
37.7749,-122.4194  # 旧金山示例坐标
40.7128,-74.0060   # 纽约示例坐标

2. 安装依赖库

执行以下命令安装所需工具:

pip install requests pandas python-dateutil

3. 核心代码实现

以下代码会自动遍历所有坐标、生成近3年的每日日期,请求NOAA接口获取数据并整理成你需要的格式:

import requests
import pandas as pd
from datetime import datetime, timedelta
import time

# 读取坐标列表
coords_df = pd.read_csv('counties_coords.csv')

# 定义时间范围:近3年
end_date = datetime.today()
start_date = end_date - timedelta(days=3*365)
date_list = pd.date_range(start=start_date, end=end_date, freq='D')

# 存储结果
output_data = []

# 遍历坐标和日期
for idx, coord in coords_df.iterrows():
    lat = coord['latitude']
    lon = coord['longitude']
    for dt in date_list:
        # 构造请求参数
        query_params = {
            'lat': lat,
            'lon': lon,
            'year': dt.year,
            'month': dt.month,
            'day': dt.day,
            'tz': 'America/New_York',  # 按需修改时区,比如America/Los_Angeles
            'format': 'json'
        }
        # 发送请求(添加延时避免触发接口限制)
        time.sleep(1)
        res = requests.get('https://gml.noaa.gov/grad/solcalc/calcdetails.json', params=query_params)
        if res.status_code == 200:
            sol_data = res.json()
            # 提取所需字段并添加到结果列表
            output_data.append({
                'latitude': lat,
                'longitude': lon,
                'year': dt.year,
                'month': dt.month,
                'day': dt.day,
                'Sunrise': sol_data['sunrise'],
                'Sunset': sol_data['sunset']
            })
        else:
            print(f"Failed to fetch data for ({lat}, {lon}) on {dt.date()}")

# 保存为指定分隔符的CSV文件
result_df = pd.DataFrame(output_data)
result_df.to_csv('sunrise_sunset_results.csv', index=False, sep='|')
print("Data saved to sunrise_sunset_results.csv")

4. 重要提示

  • 时区设置:tz参数需使用IANA时区标识符,美国常用的有America/Chicago、America/Phoenix等,根据数据需求调整。
  • 请求限制:NOAA公开接口存在请求频率限制,time.sleep(1)是必要的,避免IP被临时封禁。
  • 测试验证:建议先拿1-2个坐标、1个月的日期做小范围测试,确认数据格式正确后再跑全量数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 07:25:32