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

如何在ArcGIS Online的Jupyter Notebook中用Python抓取JS按钮内的CSV表格?

解决动态生成CSV导入ArcGIS Online Jupyter Notebook的问题

核心思路

这个「Export (CSV)」按钮是通过JavaScript发起动态请求生成CSV文件,没有直接可访问的静态CSV URL,所以不能直接用pandas.read_csv读取。需要先找到按钮触发的实际接口地址,再通过请求库获取内容后导入pandas。

步骤1:抓取实际CSV接口

  • 打开目标网站https://ciffc.net/national,按下F12打开浏览器开发者工具
  • 切换到Network标签,筛选类型为XHR/Fetch
  • 点击红色的「Export (CSV)」按钮,找到新出现的请求,查看其Request URL(这就是生成CSV的实际接口地址)
  • 记录请求的方法(GET/POST)和必要的请求头(比如Referer、User-Agent)

步骤2:在ArcGIS Online Jupyter Notebook中编写代码

import pandas as pd
import requests

# 替换为你抓包得到的实际CSV接口URL
csv_api_url = "https://ciffc.net/api/national/export"

# 模拟浏览器请求头,避免被网站拦截
request_headers = {
    "Referer": "https://ciffc.net/national",
    "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"
}

# 发起请求并处理响应
try:
    response = requests.get(csv_api_url, headers=request_headers)
    response.raise_for_status()  # 请求失败时抛出异常
except requests.exceptions.RequestException as e:
    print(f"请求出错: {e}")
else:
    # 将响应文本转为pandas可读取的IO对象
    csv_content = pd.io.common.StringIO(response.text)
    df = pd.read_csv(csv_content)
    
    # 验证数据导入结果
    print("数据导入成功,前5行预览:")
    print(df.head())

注意事项

  • 如果遇到403 Forbidden错误,检查抓包得到的请求头,把Cookie也加入request_headers中(从开发者工具的Request Headers里复制完整Cookie内容)
  • 若后续CSV内容异常,重新抓包确认接口地址和参数是否有变化

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 05:32:21