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

如何获取网页Network栏下LstIscritti接口的目标JSON数据?

抓取目标接口的JSON数据方案

方法1:直接调用API(推荐,更高效)

无需依赖Selenium,直接用requests库模拟浏览器请求,跳过页面渲染环节,直接获取接口的完整JSON数据:

import requests
import time

# 初始化会话,维持网站所需的会话Cookie
session = requests.Session()

# 先访问主页面,获取必要的会话标识
main_url = "https://commercialisti.it/iscritti"
session.get(main_url)

# 构造API请求参数
cap_code = "37138"
timestamp = int(time.time() * 1000)  # 生成当前毫秒级时间戳,匹配接口参数格式
api_url = f"https://commercialisti.it/iscritti/LstIscritti?_={timestamp}"

# 模拟浏览器请求头,参考开发者工具中该接口的Headers信息
headers = {
    "Accept": "application/json, text/javascript, */*; q=0.01",
    "X-Requested-With": "XMLHttpRequest",
    "Referer": "https://commercialisti.it/iscritti/",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"
}

# 携带Cap参数发送GET请求
params = {"Cap": cap_code}
response = session.get(api_url, headers=headers, params=params)

# 解析并处理JSON数据
if response.status_code == 200:
    full_data = response.json()
    print(full_data)
    # 可选:将数据保存到本地文件
    # import json
    # with open("commercialisti_data.json", "w", encoding="utf-8") as f:
    #     json.dump(full_data, f, ensure_ascii=False, indent=2)
else:
    print(f"请求失败,状态码:{response.status_code}")

注意:请求头中的User-Agent建议替换为你当前浏览器的真实标识,可从开发者工具的请求头中复制。

方法2:用Selenium监听网络请求

如果需要保留Selenium的操作流程,可以通过Chrome DevTools协议(CDP)捕获目标接口的响应:

from selenium import webdriver
from selenium.webdriver.common.by import By
import time
import json

# 初始化Chrome浏览器并启用网络监听
driver = webdriver.Chrome()
driver.maximize_window()
driver.execute_cdp_cmd("Network.enable", {})

# 定义捕获目标接口的回调函数
def capture_api_response(event):
    request_id = event["requestId"]
    response_url = event["response"]["url"]
    if "LstIscritti" in response_url:
        # 获取接口响应体
        response_body = driver.execute_cdp_cmd("Network.getResponseBody", {"requestId": request_id})
        full_data = json.loads(response_body["body"])
        print("获取到完整接口数据:")
        print(full_data)

# 监听响应完成事件
driver.execute_cdp_cmd("Network.responseReceived", {}, capture_api_response)

# 原有页面操作流程
driver.get('https://commercialisti.it/iscritti')
driver.implicitly_wait(10)

driver.switch_to.frame(driver.find_element(By.XPATH, "(//iframe)[1]"))
casella_testo = driver.find_element("id", "Cap")
casella_testo.send_keys("37138")
pulsante_cerca = driver.find_element("id", 'btnContinua')
pulsante_cerca.click()

time.sleep(5)  # 等待请求完成
driver.quit()

说明:该方法通过Selenium调用Chrome的调试接口,实时监听网络请求,当目标接口返回响应时自动捕获并解析数据,需确保Selenium与Chrome版本兼容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 19:28:14