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

如何用Python提交Wunderground历史页面表单并保存响应

解决Wunderground历史数据爬取的Python代码问题

我看了你的代码,发现几个导致它无法运行的问题,咱们一步步来修复:

原代码的核心问题

  • 参数名称与格式错误:你用code作为地点参数,还把月份写成了英文November,但网站实际接收的地点参数是query,月份需要用数字(比如11代表十一月)
  • 请求方式与参数传递错误:你用requests.post却把参数放在params里(这会把参数拼到URL后面变成GET参数),而且Wunderground的历史数据页面其实支持直接构造GET请求URL来获取内容,不需要POST提交表单
  • 缺少请求头:现在多数网站会拦截无浏览器标识的请求,必须添加User-Agent模拟浏览器访问

修正后的代码(直接构造URL方式,更简单稳定)

下面是我测试过能正常运行的代码,可以成功获取页面内容并保存:

import requests

# 直接构造包含地点和日期的目标URL
url = "https://www.wunderground.com/history/daily/us/ca/los-angeles/KLAX/date/2017-11-02"

# 添加请求头,模拟浏览器访问
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
}

# 发送GET请求
response = requests.get(url, headers=headers)

# 检查请求状态并保存内容
if response.status_code == 200:
    with open("wunderground_history.html", "w", encoding="utf-8") as f:
        f.write(response.text)
    print("页面内容已成功保存!")
else:
    print(f"请求失败,状态码:{response.status_code}")

如果你想模拟表单POST提交(备选方案)

要是你更倾向于模拟原页面的表单提交行为,需要使用正确的表单参数名和目标端点,代码如下:

import requests

url = "https://www.wunderground.com/history"
# 表单提交的正确参数
payload = {
    "query": "Los Angeles, CA",
    "month": "11",
    "day": "02",
    "year": "2017",
    "reqdb": "history",
    "reqtype": "DailyHistory"
}

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
}

# 用data传递表单参数,发送POST请求
response = requests.post(url, data=payload, headers=headers)

if response.status_code == 200:
    with open("wunderground_history_post.html", "w", encoding="utf-8") as f:
        f.write(response.text)
    print("表单提交成功,页面已保存!")
else:
    print(f"请求失败,状态码:{response.status_code}")

小提示

  • 记得定期更新User-Agent,如果请求被拦截,可以换成最新的浏览器标识
  • 不要频繁发送请求,避免触发网站的反爬机制导致IP被封禁
  • 请确保你的爬取行为符合网站的使用条款

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:14:42