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

能否使用Selenium提取API调用响应中的数据?Python场景需求

能否用Selenium处理API响应?

当然可以。你可以把API返回的JSON数据渲染成临时HTML结构,然后用Selenium熟悉的元素定位语法(比如CSS选择器、XPath)提取数据,完全不用写嵌套循环。

实现思路

核心是将JSON数据转换成浏览器可解析的HTML,再用Selenium操作这个临时页面:

  • 用Selenium打开空白页面
  • 通过JavaScript把JSON数据注入页面,生成对应HTML结构(比如列表、表格)
  • 用你熟悉的Selenium定位方法提取目标数据

示例代码

假设API返回如下JSON结构:

{
  "users": [
    {"id": 1, "name": "Alice", "email": "alice@example.com"},
    {"id": 2, "name": "Bob", "email": "bob@example.com"}
  ]
}

Python代码示例:

from selenium import webdriver
from selenium.webdriver.common.by import By
import requests

# 1. 调用API获取JSON数据
api_url = "https://your-api-endpoint.com/users"
response = requests.get(api_url)
json_data = response.json()

# 2. 启动Selenium浏览器
driver = webdriver.Chrome()
driver.get("data:text/html,<html><body></body></html>")  # 打开空白页面

# 3. 用JS把JSON数据渲染成HTML列表
render_script = f"""
const data = {str(json_data)};
const ul = document.createElement('ul');
data.users.forEach(user => {{
  const li = document.createElement('li');
  li.innerHTML = `<span class="id">${{user.id}}</span> - <span class="name">${{user.name}}</span> (<span class="email">${{user.email}}</span>)`;
  ul.appendChild(li);
}});
document.body.appendChild(ul);
"""
driver.execute_script(render_script)

# 4. 用Selenium提取数据,和之前爬网页的方式一致
users = driver.find_elements(By.TAG_NAME, "li")
for user in users:
    user_id = user.find_element(By.CLASS_NAME, "id").text
    name = user.find_element(By.CLASS_NAME, "name").text
    email = user.find_element(By.CLASS_NAME, "email").text
    print(f"ID: {user_id}, Name: {name}, Email: {email}")

# 关闭浏览器
driver.quit()

优缺点说明

  • 优点:复用已有的Selenium定位经验,无需处理复杂JSON嵌套逻辑,上手零成本
  • 缺点:比直接解析JSON多了浏览器渲染步骤,性能稍差,适合JSON结构极复杂、嵌套层级多的场景

内容的提问来源于stack exchange,提问作者Doyel De Sarkar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 06:01:10