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

使用R抓取实时更新信息:ArcGIS平台英国新冠病例数据爬取求助

嘿,作为刚搞定维基爬取、却卡在ArcGIS仪表盘的新手,我太懂这种摸不着头脑的感觉了!毕竟这类动态加载的地图平台和静态页面完全不是一个路数,下面给你几个实用的技巧,一步步来拆解:

第一步:先搞清楚数据是怎么加载的

ArcGIS仪表盘的内容不是直接写在页面HTML里的,而是通过后台API动态拉取的,所以第一步得用浏览器开发者工具抓这个API:

  • 打开目标页面,按下F12调出开发者工具,切换到「Network」标签页
  • 刷新页面,然后在过滤器里选择「XHR」或「Fetch」,这样就能过滤掉图片、CSS这类静态资源,只看数据请求
  • 挨个看这些请求的响应内容,找包含英国地方当局和病例数的JSON数据——这类请求的URL里通常会有FeatureServer或者query关键词,很好识别
第二步:模拟API请求拿数据

找到正确的API接口后,就可以用你熟悉的工具(比如Python的requests库)来模拟请求了:

  • 回到开发者工具的请求详情,复制完整的请求URL、请求方法(一般是GET),还有请求头里的User-Agent(用来伪装成浏览器,避免被拦截)
  • 写一段简单的代码来请求并解析数据,比如:
import requests
import json

# 替换成你找到的API接口URL
api_url = "这里填你抓到的API地址"
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"
}

response = requests.get(api_url, headers=headers)
data = json.loads(response.text)

# 从JSON里提取你需要的字段,字段名要根据实际响应调整
for item in data["features"]:
    attributes = item["attributes"]
    local_authority = attributes["LocalAuthority"]  # 替换成实际的字段名
    case_count = attributes["CovidCases"]  # 替换成实际的字段名
    print(f"{local_authority}: {case_count}")

注意:字段名要从你抓到的JSON响应里找,比如可能是Name、CasesTotal这类,得自己对应上。

第三步:处理数据分页(如果需要)

有些ArcGIS API会限制单次返回的条数(比如默认最多1000条),如果数据量超过这个数,就得用分页参数来获取全部数据:

  • 在请求URL里添加&resultOffset=0&resultRecordCount=2000,其中resultOffset是起始位置,resultRecordCount是单次返回的条数
  • 循环递增resultOffset(比如每次加2000),直到返回的数据为空,就说明已经拿到所有数据了
第四步:注意合规和反爬
  • 不要疯狂刷请求:每次请求之间加个time.sleep(1)之类的间隔,别给服务器添乱,也防止被IP封禁
  • 先看网站的使用条款:确认这类数据是否允许爬取,遵守规则总是没错的

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 07:27:31