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

如何从ArcGIS Online地图抓取动态冰况数据

ArcGIS地图公开冰况数据抓取方案

1. 是否可以抓取此类ArcGIS地图的数据?

完全可以。这类基于ArcGIS Online的市政公开地图数据,本质是通过ArcGIS REST API对外提供服务的,只要数据本身是公开可访问的(目标网站的冰况信息属于市政公开范畴),用于个人非商业用途的抓取是合法可行的。

2. 推荐使用哪些库或技术?

按效率优先级排序:

  • Axios/Fetch + ArcGIS REST API:用你熟悉的HTTP请求库直接调用ArcGIS的REST接口,不需要模拟浏览器,是最高效的方式。
  • ArcGIS API for Python:Esri官方推出的Python库,专门用于和ArcGIS生态交互,内置了数据查询、提取的方法,无需手动拼接复杂的API参数。
  • Selenium/Playwright:仅当上述方法无法获取数据(比如存在特殊验证逻辑)时使用,通过模拟浏览器加载页面后提取数据,效率较低但兼容性强。

3. 是否有公开API可用于更高效地收集这些数据?

有,目标网站依赖的ArcGIS REST API就是最直接的公开接口,你可以按以下步骤找到并使用:

  1. 打开目标网站,按F12进入开发者工具,切换到「Network」面板,筛选「XHR」类型请求。
  2. 刷新页面,查找包含FeatureServer或MapServer的请求地址(这是ArcGIS数据服务的核心端点)。
  3. 确定冰况数据对应的图层ID(通常在服务端点的layers接口里可以查看),然后构造查询请求:
    • 请求URL格式:{FeatureServer地址}/{图层ID}/query
    • 核心参数:
      • where=1=1:获取该图层下所有要素
      • outFields=*:返回所有字段数据
      • f=json:指定返回JSON格式

示例代码(Axios)

const axios = require('axios');

async function getIceConditionData() {
  // 替换为你找到的FeatureServer端点和图层ID
  const apiUrl = 'https://services.arcgis.com/xxx/arcgis/rest/services/xxx/FeatureServer/0/query';
  const queryParams = {
    where: '1=1',
    outFields: '*',
    f: 'json'
  };

  try {
    const response = await axios.get(apiUrl, { params: queryParams });
    // features数组里就是结构化的冰况数据
    console.log('冰况数据:', response.data.features);
  } catch (error) {
    console.error('请求失败:', error.message);
  }
}

getIceConditionData();

注意:抓取前请确认网站的robots.txt规则,且仅将数据用于个人使用,遵守当地数据相关法规。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 01:20:15