如何在python中过滤api JSON数据?

时间:2019-03-05 10:40:08

标签: python json python-3.x request

我正在尝试在python中构建github信息,我希望脚本抓住这些东西:

 "stargazers_count": 2, << i need the number updated
 "watchers_count": 2, << i need the number updated
 "forks": 1, << i need the number updated

例如:https://api.github.com/repos/toddmotto/angular-1-5-components-app

  import requests

  r = requests.get('https://api.github.com/repos/toddmotto/angular-1-5-components-app')

  print(r.json())

我需要结果像

stargazers_count:电话号码

watchers_count:电话号码

叉子:数字

5 个答案:

答案 0 :(得分:0)

使用键提取所需的值。

例如:

import requests

r = requests.get('https://api.github.com/repos/toddmotto/angular-1-5-components-app').json()
print(r["stargazers_count"])
print(r["watchers_count"])
print(r["forks"])

输出:

573
573
200

答案 1 :(得分:0)

r.json()为您提供了python字典。

  import requests
  r = requests.get('https://api.github.com/repos/toddmotto/angular-1-5-components-app')
  resp = r.json()
  print(r['stargazers_count']) #573
  print(r['watchers_count'])  #573
  print(r['forks']) #200

答案 2 :(得分:0)

您只需将json键放在列表中,然后在列表中进行迭代,以选择所需的值。

from requests import get

keys = [
    "stargazers_count",
     "watchers_count",
     "forks"
]

response = get('https://api.github.com/repos/toddmotto/angular-1-5-components-app').json()

for key in keys:
    print('{key}:\t{value}'.format(
            key=key,
            value=response[key]
        )
    )

如果需要所有键,请使用response.keys()

# prints out all keys
for key in response.keys():
print('{key}:\t{value}'.format(
        key=key,
        value=response[key]
    )
)

答案 3 :(得分:0)

在Python中使用请求库

首先,让我们向您介绍请求。

  

什么是请求资源?

Requests是使用Python编写的Apache2许可HTTP库。它被设计用于人类与语言交互。这意味着您不必手动向URL添加查询字符串,也无需对POST数据进行表单编码。不用担心,这对您没有意义。它将在适当的时候。

请求可以做什么?

请求将允许您使用Python发送HTTP / 1.1请求。使用它,您可以通过简单的Python库添加诸如标题,表单数据,多部分文件和参数之类的内容。它还允许您以相同的方式访问Python的响应数据。

在编程中,库是程序可以使用的例程,函数和操作的集合或预先配置的选择。这些元素通常称为模块,并以对象格式存储。

库很重要,因为您可以加载模块并利用其提供的所有功能,而无需显式链接到依赖它们的每个程序。它们确实是独立的,因此您可以使用它们构建自己的程序,但是它们仍然与其他程序分开。

将模块视为一种代码模板。

重申一下,“请求”是一个Python库。

导入请求模块

要在Python中使用Requests库,必须导入适当的模块。您只需在脚本的开头添加以下代码即可完成此操作:

import requests

当然,要执行上述任何一项操作(安装随附的库),您需要先下载必要的程序包,并使解释器可以访问它。

提出请求

当您对网站或门户网站执行ping操作以获取信息时,这称为发出请求。这正是Requests库的设计目的。

要获取网页,您需要执行以下操作:

r = requests.get('https://api.github.com/repos/toddmotto/angular-1-5-components-app')
finalResult = r.json()
print "stargazers_count",finalresult["stargazers_count"]

答案 4 :(得分:0)

创建一个函数,以照顾请求的属性的不同组合。

还要注意失败。

import requests
import pprint


def get_github_activity_attributes(url, attributes=[]):
    """ Do http call and return the full response as dict or a subset of the response """
    r = requests.get(url)
    if r.status_code == 200:
        if not attributes:
            # The caller asked to return all attributes
            return True, r.json()
        else:
            # The caller asked for subset of the attributes (assuming first level attributes only)
            data = r.json()
            return True, {attr: data[attr] for attr in attributes}
    else:
        return False, 'Request failed with status code {}.'.format(r.status_code)


ok, all_attributes = get_github_activity_attributes('https://api.github.com/repos/toddmotto/angular-1-5-components-app')
if ok:
    print('All attributes below')
    pprint.pprint(all_attributes)


ok, few_attributes = get_github_activity_attributes('https://api.github.com/repos/toddmotto/angular-1-5-components-app',
                                                    ['forks', 'watchers_count'])
if ok:
    print('Few attributes below')
    pprint.pprint(few_attributes)