Python의 URL에서 JSON 가져 오기

URL을 사용하여 웹 서버에서 데이터를 얻고 싶을 때마다 해당 데이터는 특정 형식을 가져야합니다. 일반적으로 웹 서버에서 데이터를 가져올 때마다 JSON 또는 XML 형식을 사용합니다.

우리는 XML보다 JSON을 선호합니다. 소프트웨어 산업에서 꽤 인기를 얻었 기 때문입니다. Python에는 JSON을 처리하기위한 다양한 라이브러리가 있습니다.

이 자습서에서는 Python에서 사용할 수있는jsonrequests모듈을 사용합니다.

우리가 가져올 JSON 데이터는 아래 URL에서 가져옵니다. 이 URL을 통해 이름, 이메일, 주소 등과 같이사용자와 관련된 모든 데이터를 가져올 수 있습니다. 무료로 사용할 수 있습니다.

https://jsonplaceholder.typicode.com/users

Restful API 측면에서 URL을 엔드 포인트라고합니다. 이 자습서에서는이 두 단어를 서로 바꿔서 사용할 것입니다. 위의 URL에서/users는 엔드 포인트를 나타냅니다.

브라우저에서 위 URL을 열면사용자와 관련된 모든 데이터가 JSON 형식으로 표시됩니다. 아래와 같습니다.

[
  {
    "id": 1,
    "name": "Leanne Graham",
    "username": "Bret",
    "email": "Sincere@april.biz",
    "address": {
      "street": "Kulas Light",
      "suite": "Apt. 556",
      "city": "Gwenborough",
      "zipcode": "92998-3874",
      "geo": {
        "lat": "-37.3159",
        "lng": "81.1496"
      }
    },
    "phone": "1-770-736-8031 x56442",
    "website": "hildegard.org",
    "company": {
      "name": "Romaguera-Crona",
      "catchPhrase": "Multi-layered client-server neural-net",
      "bs": "harness real-time e-markets"
    }
  },
]

위의 코드 블록에서 단일 사용자와 관련된 JSON 데이터 만 표시했습니다. 이것은 단지 설명을위한 것입니다. 그러나 URL을 방문하면 모든 사용자의 데이터를 볼 수 있습니다.

JSON은JavaScript Object Notation을 참조합니다. 서버와 클라이언트간에 데이터를주고받는 데 사용되며 그 반대의 경우도 마찬가지입니다. 여기에서JavaScript라는 단어와 혼동하지 마십시오. JSON은 모든 프로그래밍 언어와 독립적입니다. JSON에서는 두 가지 유형의 대괄호를 사용하여 데이터 형식을 지정합니다. 하나는array또는list를 나타내는 대괄호[]이고 다른 하나는object를 나타내는 중괄호{}입니다.

JSON 내부의 데이터는 항상 따옴표""안의키-값쌍의 형태입니다. 따라서 값에 액세스하려면 해당 값과 관련된를 사용해야합니다. 예를 들어 위의 JSON 데이터에서 사용자 이름에 액세스하려고한다고 가정 해 보겠습니다. name키를 사용하여 첫 번째 사용자의 이름 인Leanne Graham값을 가져옵니다. 또한 JSON에서는 주석이 허용되지 않습니다.

Python에서 JSON 데이터 가져 오기 및 액세스

먼저 데이터를 가져오고 액세스하려면requestsjson모듈을 가져와야합니다.

import requests, json

URL에서 데이터를 가져와 문자열로 변환

여기서 수행해야 할 첫 번째 단계는requests라이브러리를 사용하여 JSON 데이터를 가져 오는 것입니다.

url = requests.get("https://jsonplaceholder.typicode.com/users")
text = url.text
print(type(text))

출력:

<class 'str'>

requests라이브러리에는 URL을 매개 변수로 취한 다음GET요청을 지정된 URL로 보내는get()이라는 메소드가 있습니다. 서버에서받은 응답은url이라는 변수에 저장됩니다.

url변수 내에 저장된이 응답은url.text와 같은.text메소드를 사용하여 문자열로 변환해야합니다. 그런 다음 결과를text변수에 저장합니다. text변수의 유형을 인쇄하면<class 'str'>유형이됩니다.

JSON 데이터 구문 분석

구문 분석은 문자열 데이터를 JSON 형식으로 변환하는 프로세스입니다. 이를 위해json모듈을 사용할 것입니다.

data = json.loads(text)
print(type(data))

출력:

<class 'list'>

json모듈은loads()라는 메소드와 함께 제공되며loads()s는 문자열을 나타냅니다. 문자열 데이터를 JSON으로 변환하고 싶기 때문에이 방법을 사용할 것입니다. 이 메소드 내에서 문자열 데이터json.loads(text)를 포함하는text변수를 전달하고data변수에 저장해야합니다.

이제data에 전체 JSON 응답이 있습니다. data변수의 유형을 인쇄하면<class 'list'>유형이됩니다.이 경우 JSON 응답은 대괄호[]로 시작하고 Python에서는 목록이 정사각형으로 시작하기 때문입니다. 대괄호.

JSON 데이터에 액세스

이제 JSON 데이터를 구문 분석 했으므로data변수를 사용하여 원하는 개별 값에 액세스 할 준비가되었습니다. 이름 및 주소와 같은 첫 번째 사용자의 세부 정보에 액세스하려면 다음을 수행 할 수 있습니다.

import json, requests 

url = requests.get("https://jsonplaceholder.typicode.com/users")
text = url.text

data = json.loads(text)

user = data[0]
print(user['name'])

address = user['address']
print(address)

출력:

Leanne Graham
{'street': 'Kulas Light', 'suite': 'Apt. 556', 'city': 'Gwenborough', 'zipcode': '92998-3874', 'geo': {'lat': '-37.3159', 'lng': '81.1496'}}

사용자 목록에서 첫 번째 사용자에 액세스하려면 data라는 변수에 저장된 JSON 데이터의 0인덱스를 사용한 다음 첫 번째 사용자의 전체 세부 정보를 user에 저장해야합니다. 이제이users는 해당 사용자와 관련된 모든 세부 정보를 포함하는 개체입니다. 이름에 액세스하려면user['name']과 같은user변수에name키를 전달한 다음 인쇄하면됩니다. 콘솔 내부에 사용자 이름이 인쇄됩니다.

주소에 액세스하려면 사용자 변수 즉,user['address']내에address키를 전달한 다음address라는 변수에 저장 한 다음 인쇄해야합니다. 그러면 아파트 번호, 거리 이름, 우편 번호 등과 같은 주소 필드와 관련된 모든 특정 세부 정보가 포함 된 개체가 제공됩니다. 이러한 세부 정보 중에서 사용자의zipcode만 원한다고 가정 해 보겠습니다. 그런 다음address개체 내에zipcode코드 키를 전달해야합니다.

관련 문장 - Python JSON

  • Python에서 JSON을 CSV로
  • Python에서 JSON에 사전 저장
  • 관련 문장 - Python API

  • Python에서 Json 객체 반복
  • Python 에서 JSON 파일을 예쁘게 인쇄하는 방법