Python의 URL에서 JSON 가져 오기

Sahil Bhosale 2021년3월24일
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
import 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
import 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코드 키를 전달해야합니다.

Sahil Bhosale avatar Sahil Bhosale avatar

Sahil is a full-stack developer who loves to build software. He likes to share his knowledge by writing technical articles and helping clients by working with them as freelance software engineer and technical writer on Upwork.

LinkedIn

관련 문장 - Python JSON