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

使用Python requests+BeautifulSoup无法爬取ArcGIS Hub站点谷歌云盘链接

问题根因

你请求的站点属于单页应用(SPA),所有页面内容都是通过JavaScript动态加载渲染的,requests库只能获取到初始的静态HTML骨架,不会执行页面中的JS脚本,所以返回的内容里没有你要找的Google Drive链接。

解决方案

下面提供两种可落地的解决方法:

  • 方法一:使用无头浏览器模拟页面渲染
    这种方法会模拟真实浏览器的运行逻辑,自动执行页面JS得到完整渲染后的页面内容,兼容性好,不需要额外分析站点接口。
    首先安装依赖:
    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

# 配置Chrome无头模式
chrome_opt = webdriver.ChromeOptions()
chrome_opt.add_argument("--headless=new")
chrome_opt.add_argument("--disable-gpu")
chrome_opt.add_argument("--no-sandbox")

driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=chrome_opt)
driver.get("https://riwayat-file-vaksinasi-dki-jakarta-jakartagis.hub.arcgis.com/")
# 等待3秒确保页面渲染完成,也可以用Selenium的显式等待匹配目标元素加载完成,稳定性更高
time.sleep(3)

# 获取渲染后的完整HTML
page_content = driver.page_source
soup = BeautifulSoup(page_content, "lxml")

# 提取所有Google Drive链接
drive_links = [tag["href"] for tag in soup.find_all("a", href=lambda href: href and "drive.google.com" in href)]
print(drive_links)

# 关闭浏览器进程
driver.quit()
  • 方法二:直接调用站点数据接口
    你可以打开浏览器F12开发者工具的「网络」面板,刷新页面后筛选Fetch/XHR类型的请求,找到站点加载内容数据的后端接口,直接请求该接口获取JSON格式的原始数据,解析后就能拿到所有链接,这种方法请求速度更快,资源消耗更低。

内容的提问来源于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 15:24:02