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

如何通过request.get传递复选框参数?网站表格下载技术求助

搞定BOM网站IFD数据下载的问题

嘿,我来帮你解决这个表格下载的难题!先说说你代码里的几个小问题,再给你调整后的可行方案:

你当前代码的问题

  • 直接把browsercookie模块传给requests.get的cookies参数是错误的,得用模块里的方法加载对应浏览器的cookies才行;
  • URL里的参数转义符&要换成正常的&,不然服务器可能识别不了;
  • 这类网站通常需要先访问主页面建立会话,直接跳转到带参数的URL容易被拦截。

调整后的解决方案

步骤1:正确加载浏览器Cookie

先确保你用浏览器打开过目标网站(不需要登录,但要让浏览器保存会话信息),然后用browsercookie加载对应浏览器的cookies:

import requests
import browsercookie

# 加载Chrome的cookies,用Firefox就换成browsercookie.firefox(),自动检测用browsercookie.load()
cookies = browsercookie.chrome()

步骤2:建立会话并访问主页面

用requests.Session()维持会话,先访问工具主页面获取必要的会话cookie:

session = requests.Session()
# 先访问IFD工具的主页面
main_url = 'http://www.bom.gov.au/water/designRainfalls/revised-ifd/'
session.get(main_url, cookies=cookies)

# 可选:添加User-Agent模拟浏览器,避免被反爬拦截
session.headers.update({
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'
})

步骤3:构造请求参数并获取数据

按照网站复选框对应的参数构造请求(这里假设你要勾选分钟和小时数据的复选框,对应sdmin和sdhr):

# 构造参数,对应页面上的复选框和输入项
params = {
    'coordinate_type': 'dd',
    'latitude': '-35',
    'longitude': '144',
    'sdmin': 'true',  # 分钟数据复选框
    'sdhr': 'true',   # 小时数据复选框
    # 'sdday': 'true', # 如果需要日数据就保留,不需要就注释
    'user_label': '',
    'year': '2016'
}

# 发送GET请求获取数据
response = session.get('http://www.bom.gov.au/water/designRainfalls/revised-ifd/', params=params, cookies=cookies)

# 检查请求是否成功
if response.status_code == 200:
    # 保存响应内容到本地,之后可以提取表格
    with open('ifd_tables.html', 'w', encoding='utf-8') as f:
        f.write(response.text)
    print("数据下载成功啦!可以打开保存的HTML提取表格~")
else:
    print(f"请求失败,状态码:{response.status_code}")

备选:如果GET请求不行,试试POST

有些网站的表单是用POST提交的,你可以打开浏览器开发者工具(F12),勾选复选框点击提交,查看网络请求的方法。如果是POST,把上面的session.get换成:

response = session.post('http://www.bom.gov.au/water/designRainfalls/revised-ifd/', data=params, cookies=cookies)

关于browsercookie不生效的额外提示

  • 可能你加载的浏览器不对,比如用的是Edge却调用了browsercookie.chrome(),试试browsercookie.load()自动检测;
  • 如果还是不行,可以手动从浏览器复制cookie,放到requests的cookies参数里(格式是字典:{'cookie_name': 'cookie_value'})。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:55:25