如何从API返回的JSON响应中提取link值并用于Selenium脚本
问题描述
我发送请求后得到如下JSON响应:
{"status": "success", "orders": [{"id": "1666543", "link": "asd.com", "quantity": "111"}]}
我的响应处理代码如下:
response = requests.get(url, params=params) response.json() wynik = response.json() print(response.json()) with open('data.json', 'w', encoding='utf-8') as f: json.dump(response.text, f, ensure_ascii=False, indent=4)
目前代码保存的data.json是单行格式,我需要提取其中的link值并用于Selenium脚本,实现「发送请求→获取响应→复用link值」的全自动化流程,但不知道怎么提取,请帮忙解决。
解决方案
1. 修正JSON文件保存格式问题
你当前用json.dump(response.text, ...)是把原始JSON字符串直接写入文件,所以呈现单行。应该将解析后的JSON对象(而非字符串)写入,这样才能生成格式化的文件:
import requests import json response = requests.get(url, params=params) wynik = response.json() # 仅解析一次即可,避免重复调用 print(wynik) # 保存格式化后的JSON文件 with open('data.json', 'w', encoding='utf-8') as f: json.dump(wynik, f, ensure_ascii=False, indent=4)
2. 提取link值
orders是数组结构,里面的每个元素为订单对象。如果只有单个订单,直接通过索引取第一个元素的link字段:
# 提取单个订单的link order_link = wynik['orders'][0]['link'] print(order_link) # 输出: asd.com
如果存在多个订单,可通过循环遍历所有订单的link:
# 遍历所有订单提取link for order in wynik['orders']: print(order['link'])
3. 结合Selenium实现全自动化流程
将提取到的link传入Selenium脚本,完成端到端自动化操作,示例代码如下:
import requests import json from selenium import webdriver import time # 1. 发送请求获取响应 url = "你的请求URL" params = {"参数键": "参数值"} response = requests.get(url, params=params) wynik = response.json() # 2. 提取link值(若需完整URL可自行拼接前缀,比如https://) order_link = wynik['orders'][0]['link'] # 3. Selenium自动化操作 driver = webdriver.Chrome() # 需确保ChromeDriver已配置环境变量 driver.get(order_link) # 此处添加你的业务操作逻辑,比如点击元素、填写表单等 # 示例:打印页面标题 print(driver.title) time.sleep(3) # 临时等待页面加载(生产环境建议用显式等待) driver.quit()
内容的提问来源于stack exchange,提问作者r4zoRK
相关产品推荐
相关产品推荐

