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

为什么使用Python+BeautifulSoup无法抓取该ArcGIS站点的超链接URL

问题原因
  1. 你原有代码里的headers变量没有提前定义,直接运行会先触发变量未定义的报错
  2. 最核心的问题是你要爬取的网站属于前端动态渲染站点,所有文件链接都是页面加载完成后通过JavaScript异步请求接口渲染生成的。你直接用requests请求拿到的是未经过JS渲染的初始HTML源码,里面根本不存在你要的<a>标签,所以就算补全请求头也抓不到目标结果。
解决方法

有两种常用方案可以解决这个问题:

方案1:使用Selenium模拟浏览器渲染(简单易实现)

这种方案直接模拟真实浏览器加载页面,等页面全部渲染完成后再提取元素,不需要手动找接口。

依赖安装

你需要先安装对应的依赖库:

pip install selenium webdriver-manager

完整代码示例

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from bs4 import BeautifulSoup
import time

url = "https://riwayat-file-covid-19-dki-jakarta-jakartagis.hub.arcgis.com/"
# 自动配置Chrome驱动初始化浏览器
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.get(url)
# 等待页面完全加载,可根据自身网络情况调整等待时长
time.sleep(3)
# 获取渲染完成后的完整页面源码
soup = BeautifulSoup(driver.page_source, 'html.parser')
# 关闭浏览器
driver.quit()

links = soup.find_all('a')
for link in links:
    if "href" in link.attrs:
        print(link.attrs['href'] + "\n")

方案2:直接调用站点公开接口(运行效率更高)

你可以打开浏览器控制台的「网络」标签,筛选XHR类请求找到站点获取文件列表的官方接口,直接请求接口解析数据即可,不需要启动浏览器渲染页面,运行速度更快资源占用更低。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 17:54:03