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

无法用requests模块抓取registry.terraform页面左侧azurerm_provider内容

用requests抓取Terraform Registry左侧导航内容的解决方案

问题背景

需要抓取页面https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/api_management左侧azurerm_provider分类下的认证相关内容,直接使用requests请求页面并解析HTML无法获取目标内容,且不想采用selenium方案。

原因分析

该页面的左侧导航内容并非直接嵌入在页面静态源码中,而是通过调用后端API接口动态渲染生成的,因此直接爬取页面HTML无法找到目标数据。

解决方案

定位到加载左侧导航菜单的API接口,直接请求该接口获取结构化JSON数据,再从中提取所需内容。

实现代码

import requests

# 加载左侧导航菜单的API接口,对应azurerm provider的latest版本
api_url = "https://registry.terraform.io/v2/providers/hashicorp/azurerm/versions/latest/docs/menu"

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36',
    'Accept': 'application/json'
}

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

# 遍历菜单数据,筛选出azurerm_provider分类下的所有子项
for category in data['data']:
    if category['attributes']['category'] == 'azurerm_provider':
        for link_item in category['attributes']['links']:
            print(link_item['text'])

运行结果

Azure Provider: 通过服务主体和客户端证书进行认证
Azure Provider: 通过服务主体和客户端密钥进行认证
Azure Provider: 通过服务主体和OpenID Connect进行认证
Azure Provider: 通过托管标识进行认证
Azure Provider: 通过Azure CLI进行认证

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 04:20:02