【问题标题】:How to save JSON response from browser into python variable or file [duplicate]如何将来自浏览器的 JSON 响应保存到 python 变量或文件中
【发布时间】:2020-12-03 00:51:42
【问题描述】:

我是 python 和 api 查询的新手。但是,我在这个过程中学习 python 自动化。 在此处请求您的帮助。

我有一个 SonarQube API 调用,通过它我可以在浏览器上获取一些指标或值作为 JSON 响应。我阅读了 curl 或通过 python 中的请求模块,我们将能够将响应下载到变量或文件中。我尝试了多少,我无法通过程序完成。现在,我正在将它硬编码在一个变量中并继续我的下一步。有人可以在这里帮助我吗?

我使用的查询:

https://sonar.com:9000/sonar/api/measures/component?component=abcdef&branch=test&metricKeys=ncloc

我在浏览器上收到这样的 JSON 响应:

  "component": {
    "id": "AXK4GYajYOT4RM44Ji",
    "key": "abcdef",
    "name": "test",
    "qualifier": "TRK",
    "measures": [
      {
        "metric": "ncloc",
        "value": "100000"
      }
    ],
    "branch": "test"
  }
}

我的目的是将所有这些存储在一个 python 变量中。

【问题讨论】:

  • 看看requests package
  • 注意:您没有收到“来自浏览器”的响应。您从 HTTP 服务器获取它

标签: python


【解决方案1】:

如果您使用requests 包,您可以将响应存储在data 变量中,如下所示:

import requests

params = {'component': 'abcdef', 'branch': 'test', 'metricKeys': 'ncloc'}
r = requests.get('https://sonar.com:9000/sonar/api/measures/component', params=params)
data = r.json()

print(data)

如果您想将其存储为JSON 文件:

import json
with open('data.json', 'w') as f:
    json.dump(data, f, indent=2)

【讨论】:

  • 感谢您的回复。我已经尝试过这个解决方案。我看到的错误是: AttributeError: module 'requests' has no attribute 'get' 有什么建议吗?
  • 您是否已经有一个名为requests.py 的自定义文件(这会与包冲突)?参见这里:stackoverflow.com/questions/12258816/…
  • 没有。我的项目目录中没有任何 requests.py 文件。我有这样的 JSON 响应:'''{ "component": { "id": "AXK4GYajYOT4RM44Ji", "key": "abcdef", "name": "test", "qualifier": "TRK", "措施”:[{“公制”:“ncloc”,“价值”:“134439”}],“分支”:“测试”}}'''我安装了请求模块。请求 2.24.0 错误是 AttributeError:模块 'requests' 没有属性 'get'
  • 我测试了它,它可以在干净的环境中工作。确保您的 PYTHONPATH 中没有任何名为 requests 的文件夹或文件。
猜你喜欢
  • 1970-01-01
  • 2014-10-29
  • 2019-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多