Python의 URL에서 JSON 가져 오기
URL을 사용하여 웹 서버에서 데이터를 얻고 싶을 때마다 해당 데이터는 특정 형식을 가져야합니다. 일반적으로 웹 서버에서 데이터를 가져올 때마다 JSON 또는 XML 형식을 사용합니다.
우리는 XML보다 JSON을 선호합니다. 소프트웨어 산업에서 꽤 인기를 얻었 기 때문입니다. Python에는 JSON을 처리하기위한 다양한 라이브러리가 있습니다.
이 자습서에서는 Python에서 사용할 수있는json
및requests
모듈을 사용합니다.
우리가 가져올 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 데이터 가져 오기 및 액세스
먼저 데이터를 가져오고 액세스하려면requests
및json
모듈을 가져와야합니다.
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
코드 키를 전달해야합니다.