Как фильтровать API-данные JSON в Python? - PullRequest
0 голосов
/ 05 марта 2019

я пытаюсь собрать информацию о github в python, я хочу, чтобы скрипт взял это:

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

ex: 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 голосов
/ 05 марта 2019

Создание функции, которая будет заботиться о различных комбинациях запрошенных атрибутов.

Забота о сбоях.

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)
0 голосов
/ 05 марта 2019

Использование библиотеки запросов в Python

Перво-наперво, давайте познакомим вас с запросами.

Что такое ресурс запросов?

Requests - это лицензионная HTTP-библиотека Apache2, написанная на Python. Он предназначен для использования людьми для взаимодействия с языком. Это означает, что вам не нужно вручную добавлять строки запроса в URL-адреса или кодировать данные POST в форме. Не волнуйтесь, если для вас это не имеет смысла. Это будет в свое время.

Что могут делать запросы?

Запросы позволят вам отправлять запросы HTTP / 1.1 с использованием Python. С его помощью вы можете добавлять контент, такой как заголовки, данные форм, многокомпонентные файлы и параметры, через простые библиотеки Python. Это также позволяет вам получить доступ к данным ответа Python таким же образом.

В программировании библиотека - это набор или предварительно настроенный набор подпрограмм, функций и операций, которые может использовать программа. Эти элементы часто называют модулями и хранятся в объектном формате.

Библиотеки важны, потому что вы загружаете модуль и используете все, что он предлагает, без явной ссылки на каждую программу, которая на него полагается. Они действительно автономны, так что вы можете создавать свои собственные программы с ними, и все же они остаются отделенными от других программ.

Думайте о модулях как о шаблоне кода.

Повторюсь, Requests - это библиотека Python.

Импорт модуля запросов

Для работы с библиотекой запросов в Python необходимо импортировать соответствующий модуль. Вы можете сделать это, просто добавив следующий код в начале вашего скрипта:

import requests

Конечно, чтобы сделать все это - установить библиотеку в комплекте - сначала нужно скачать необходимый пакет и сделать его доступным для переводчика.

Оформление запроса

Когда вы проверяете информацию на веб-сайте или портале, это называется отправкой запроса. Это именно то, для чего предназначена библиотека запросов.

Чтобы получить веб-страницу, вы должны сделать что-то вроде следующего:

r = requests.get('https://api.github.com/repos/toddmotto/angular-1-5-components-app')
finalResult = r.json()
print "stargazers_count",finalresult["stargazers_count"]
0 голосов
/ 05 марта 2019

r.json () предоставляет вам python dict.

  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

0 голосов
/ 05 марта 2019

Вы можете просто поместить ключи 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]
    )
)
0 голосов
/ 05 марта 2019

Извлеките необходимое значение с помощью ключа.

Ex:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...