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

如何使用Selenium的driver.page_source将网页JSON响应正确写入JSON文件?

解决Selenium爬取JSON响应后写入文件的格式问题

你遇到的核心问题其实有两个:一是Selenium默认拿到的是浏览器渲染后的HTML页面(而非纯JSON内容),二是后续处理时错误地把字符串当成JSON对象写入,导致出现转义字符。这里给你两个针对性的解决方案:

方案一:针对Selenium的正确处理方式

既然浏览器把JSON内容包裹在了<pre>标签里,我们可以直接定位这个标签提取纯JSON文本,再解析成Python对象后写入文件,彻底避免转义问题:

from selenium import webdriver
import json

url = "website.json"
driver = webdriver.Chrome()  # 替换为你实际使用的浏览器驱动
driver.get(url)

# 定位pre标签,直接获取里面的纯JSON文本
pre_element = driver.find_element("tag name", "pre")
raw_json_text = pre_element.text

# 将JSON字符串解析为Python字典/列表对象
json_data = json.loads(raw_json_text)

# 写入规范的JSON文件
with open("data.json", "w", encoding="utf-8") as outfile:
    json.dump(json_data, outfile, indent=2, ensure_ascii=False)

driver.quit()

为什么这个方法有效?

  • 直接从<pre>标签提取文本,跳过了HTML标签的干扰,拿到的是原始的JSON内容;
  • 用json.loads()把字符串转成Python原生的数据结构(字典/列表),再用json.dump()写入时,会自动生成格式规范的JSON,不会出现多余的转义字符。

方案二:跳过Selenium,直接用请求库获取(更高效)

如果这个URL本身就是直接返回JSON数据(不需要浏览器渲染页面),其实完全没必要用Selenium,用requests库直接请求会更简单高效:

import requests
import json

url = "website.json"
response = requests.get(url)
json_data = response.json()  # 直接将响应解析为JSON对象

with open("data.json", "w", encoding="utf-8") as outfile:
    json.dump(json_data, outfile, indent=2, ensure_ascii=False)

你之前的方法为什么会出现转义?

你之前用json.dump(t2, outfile, indent=2)时,t2是一个字符串类型的JSON内容。json.dump()的作用是把Python对象转成JSON格式,它会把这个字符串当成JSON的一个"字符串值"来处理,所以自动给所有引号加上了转义符,最终生成的是一个包含JSON字符串的JSON文件,而非你想要的纯JSON结构。

内容的提问来源于stack exchange,提问作者V.Nouri

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 06:53:28