이전글에서 작성했듯이 Plango에서는 5개의 TourAPI를 활용해 관광지 정보를 수집하기로 결정했다.
하지만 모든 관광지에 대해 5개의 API를 각각 호출하다 보니, 매우 많은 정보가 수집되어 각각의 API에서 어떤 정보는 쓰고 어떤 정보는 쓰지 말아야 될지 너무 헷갈렸다.
따라서 이번 글에서는 여러 관광지를 대상으로 5개의 TourAPI를 직접 호출해보면서, 각 API에서 어떤 정보를 가져올지 결정하고 정리해 보려고 한다. 관광지마다 API 응답 내용에 약간씩 차이가 있기 때문에, 다양한 광광지를 호출하고 결과를 비교하면서 실제로 필요한 정보만 가져오기 위해 최대한 노력할 것이다! 👍
import requests
import os
from dotenv import load_dotenv
load_dotenv()
service_key = os.getenv("TOURAPI_SERVICE_KEY")
url = f"http://apis.data.go.kr/B551011/KorService1/searchKeyword1?serviceKey={service_key}"
params = {
"MobileApp": "plango",
"MobileOS": "ETC",
"numOfRows": 1,
"pageNo": 1,
"listYN": "Y",
"arrange": "A",
"keyword": "경복궁",
"_type": "json"
}
response = requests.get(url, params=params)
print(response.status_code)
# dict = response.json()
# print(dict)
print(response.text)
결과
{
"response": {
"header": {
"resultCode": "0000",
"resultMsg": "OK"
},
"body": {
"items": {
"item": [
{
"addr1": "서울특별시 종로구 사직로 161 (세종 로)",
"addr2": "",
"areacode": "1",
"booktour": "1",
"cat1": "A02",
"cat2": "A0201",
"cat3": "A02010100",
"contentid": "126508",
"contenttypeid": "12",
"createdtime": "20041230090000",
"firstimage": "http://tong.visitkorea.or.kr/cms/resource/94/3487594_image2_1.jpg",
"firstimage2": "http://tong.visitkorea.or.kr/cms/resource/94/3487594_image3_1.jpg",
"cpyrhtDivCd": "Type1",
"mapx": "126.9767375783",
"mapy": "37.5760836609",
"mlevel": "6",
"modifiedtime": "20250421100815",
"sigungucode": "23",
"tel": "",
"title": "경복궁"
}
]
},
"numOfRows": 1,
"pageNo": 1,
"totalCount": 14
}
}
}
여기서는 아래 항목만 사용 할 것이다.
# 공통정보조회
import requests
import os
from dotenv import load_dotenv
load_dotenv()
service_key = os.getenv("TOURAPI_SERVICE_KEY")
url = f"http://apis.data.go.kr/B551011/KorService1/detailCommon1?serviceKey={service_key}"
params = {
"MobileApp": "plango",
"MobileOS": "ETC",
"numOfRows": 1,
"pageNo": 1,
"contentId": 126508,
"contentTypeId": 12,
"defaultYN": "Y",
"firstImageYN": "Y",
"addrinfoYN": "Y",
"mapinfoYN": "Y",
"overviewYN": "Y",
"areacodeYN": "N",
"catcodeYN": "N",
"_type": "json"
}
response = requests.get(url, params=params)
print(response.status_code)
# dict = response.json()
# print(dict)
print(response.text)
결과
{
"response": {
"header": {
"resultCode": "0000",
"resultMsg": "OK"
},
"body": {
"items": {
"item": [
{
"contentid": "126508",
"contenttypeid": "12",
"title": "경복궁",
"createdtime": "20041230090000",
"modifiedtime": "20250421100815",
"tel": "",
"telname": "",
"homepage": "<a href=\"https://royal.khs.go.kr/ROYAL/contents/menuInfo-gbg.do?grpCode=gbg\" target=\"_blank\" title=\"새창 : 궁능유적본부 홈페이지로 이동\">https://royal.khs.go.kr/</a>",
"booktour": "1",
"firstimage": "http://tong.visitkorea.or.kr/cms/resource/94/3487594_image2_1.jpg",
"firstimage2": "http://tong.visitkorea.or.kr/cms/resource/94/3487594_image3_1.jpg",
"cpyrhtDivCd": "Type1",
"addr1": "서울특별시 종로구 사직로 161 (세종로)",
"addr2": "",
"zipcode": "03045",
"mapx": "126.9767375783",
"mapy": "37.5760836609",
"mlevel": "6",
"overview": "경복궁은 1392년 조선 건국 후 1395년(태조 4)에 창건한 조선왕조 제일의 법궁이다. 경복궁은 백악산(북악산)을 주산으로 넓은 지형에 건 물을 배치하였고 정문인 광화문 앞으로 넓은 육조거리가 펼쳐진 한양의 중심이었다. ‘경복’의 이름은 ‘새 왕조가 큰 복을 누려 번영할 것’이라 는 의미가 담겨있으며, 이곳에서 세종 대에 훈민정음이 창제되어 반포되기도 하였다. 또한, 동궐(창덕궁)이나 서궐(경희궁)에 비해 위치가 북쪽에 있어 ‘북궐’이라 불리기도 했다.\n경복궁 근정전에서 즉위식을 가진 왕들을 보면 제2대 정종, 제4대 세종, 제6대 단종, 제7대 세조, 제9대 성종, 제11대 중종, 제13대 명종 등이 있다. \n경복궁은 1592년(선조 25) 임진왜란으로 소실되었는데, 그 후 복구되지 못하였다가 270여 년이 지난 1867년(고종 4)에 다시 지어졌다. 고종 대에 들어 건청궁과 태원전, 집옥재 등이 조성되었으며, 특히 건청궁 옥호루는 1895년 을미사변으 로 명성황후가 시해되는 비운의 장소이기도 하다.\n1910년 경술국치 후 경복궁은 계획적으로 훼손되기 시작하여 1915년 조선물산공진회를 개최 한다는 명분으로 대부분의 전각들이 철거되었고, 1926년에는 조선총독부 청사를 지어 경복궁의 경관을 훼손하였다. 이후 1990년대부터 본격적으로 경복궁 복원공사가 진행되었고, 1995년부터 1997년까지 조선총독부 청사를 철거하였으며 흥례문 일원, 침전 권역, 건청궁과 태원전, 그리고 광화문 등이 복원되어 현재에 이르고 있다.\n경복궁에는 조선시대의 대표적인 건축물인 경회루와 향원정의 연못이 원형대로 남아 있으며, 근정전의 월대와 조각상들은 당시의 조각미술을 대표한다. 현재 흥례문 밖 서편에는 국립고궁 박물관이 위치하고 있고, 경복궁 내 향원정의 동편에는 국립민속 박물관이 위치하고 있다.\n경복궁의 주요 문화재로는 사적 경복궁, 국보 경복궁 근정전, 국보 경복궁 경회루, 보물 경복궁 자경전, 보물 경복궁 자경전 십장생 굴뚝, 보물 경복궁 아미산굴뚝, 보물 경복 궁 근정문 및 행각, 보물 경복궁 풍기대 등이 있다. \n\n◎ 한류의 매력 을 만나는 여행 정보\n미국의 국민 TV 쇼 ‘더 투나잇 쇼 스타링 지미 팰런’에서는 ‘BTS위크’라는 이름을 붙여 닷새간 BTS 특별 방송을 진행했는데, 그중 BTS가 ‘맵 오브 더 솔 : 페르소나’ 미니앨범 수록곡 ‘소우주’ 와 ‘IDOL’을 부른 장소가 화제다. 그 장소는 바로 조선시대의 궁궐 중 하나인 ‘경복궁’의 경회루와 근정전이다. 보랏빛 조명에 아름답게 빛나 던 경복궁에서 한국의 과거를 체험해 보길 추천한다."
}
]
},
"numOfRows": 1,
"pageNo": 1,
"totalCount": 1
}
}
}
# 소개정보조회
import requests
import os
from dotenv import load_dotenv
load_dotenv()
service_key = os.getenv("TOURAPI_SERVICE_KEY")
url = f"http://apis.data.go.kr/B551011/KorService1/detailIntro1?serviceKey={service_key}"
params = {
"MobileApp": "plango",
"MobileOS": "ETC",
"numOfRows": 1,
"pageNo": 1,
"contentId": 126508,
"contentTypeId": 12,
"_type": "json"
}
response = requests.get(url, params=params)
print(response.status_code)
# dict = response.json()
# print(dict)
print(response.text)
결과
{
"response": {
"header": {
"resultCode": "0000",
"resultMsg": "OK"
},
"body": {
"items": {
"item": [
{
"contentid": "126508",
"contenttypeid": "12",
"heritage1": "0",
"heritage2": "0",
"heritage3": "0",
"infocenter": "02-3700-3900",
"opendate": "",
"restdate": "매주 화요일 <br>※ 단, 정기휴일이 공휴일 및 대체공휴일과 겹칠 경우에는 개방하며, 그 다음의 첫 번째 비공휴일이 정기휴일임",
"expguide": "",
"expagerange": "",
"accomcount": "",
"useseason": "",
"usetime": "[1월~2월] 09:00~17:00 (입장마 감 16:00)<br>\n[3월~5월] 09:00~18:00 (입장마감 17:00)<br>\n[6월~8월] 09:00~18:30 (입장마감 17:30)<br>\n[9월~10월] 09:00~18:00 (입장마감 17:00)<br>\n[11월~12월] 09:00~17:00 (입장마감 16:00)",
"parking": "가능 (승용차 240대 / 버스 50대)",
"chkbabycarriage": "없음",
"chkpet": "",
"chkcreditcard": "가능"
}
]
},
"numOfRows": 1,
"pageNo": 1,
"totalCount": 1
}
}
}
# 반복정보조회
import requests
import os
from dotenv import load_dotenv
load_dotenv()
service_key = os.getenv("TOURAPI_SERVICE_KEY")
url = f"http://apis.data.go.kr/B551011/KorService1/detailInfo1?serviceKey={service_key}"
params = {
"MobileApp": "plango",
"MobileOS": "ETC",
"numOfRows": 1,
"pageNo": 1,
"contentId": 126508,
"contentTypeId": 12,
"_type": "json"
}
response = requests.get(url, params=params)
print(response.status_code)
# dict = response.json()
# print(dict)
print(response.text)
결과
{
"response": {
"header": {
"resultCode": "0000",
"resultMsg": "OK"
},
"body": {
"items": {
"item": [
{
"contentid": "126508",
"contenttypeid": "12",
"serialnum": "0",
"infoname": "입 장 료",
"infotext": "- 개인 3,000원<br>\n- 단체(10인 이상) 2,400원",
"fldgubun": "3"
}
]
},
"numOfRows": 1,
"pageNo": 1,
"totalCount": 3
}
}
}
# 이미지정보조회
import requests
import os
from dotenv import load_dotenv
load_dotenv()
service_key = os.getenv("TOURAPI_SERVICE_KEY")
url = f"http://apis.data.go.kr/B551011/KorService1/detailImage1?serviceKey={service_key}"
params = {
"MobileApp": "plango",
"MobileOS": "ETC",
"numOfRows": 10,
"pageNo": 1,
"contentId": 126508,
"imageYN": "Y",
"subImageYN": "Y",
"_type": "json"
}
response = requests.get(url, params=params)
print(response.status_code)
# dict = response.json()
# print(dict)
print(response.text)
결과
{
"response": {
"header": {
"resultCode": "0000",
"resultMsg": "OK"
},
"body": {
"items": {
"item": [
{
"contentid": "126508",
"originimgurl": "http://tong.visitkorea.or.kr/cms/resource/29/2678629_image2_1.jpg",
"imgname": "경복궁_사진갤러리",
"smallimageurl": "http://tong.visitkorea.or.kr/cms/resource/29/2678629_image3_1.jpg",
"cpyrhtDivCd": "Type3",
"serialnum": "2678629_2"
},
{
"contentid": "126508",
"originimgurl": "http://tong.visitkorea.or.kr/cms/resource/33/2678633_image2_1.jpg",
"imgname": "경복궁_사진갤러리",
"smallimageurl": "http://tong.visitkorea.or.kr/cms/resource/33/2678633_image3_1.jpg",
"cpyrhtDivCd": "Type3",
"serialnum": "2678633_9"
},
{
"contentid": "126508",
"originimgurl": "http://tong.visitkorea.or.kr/cms/resource/93/3487593_image2_1.jpg",
"imgname": "경복궁의 설경",
"smallimageurl": "http://tong.visitkorea.or.kr/cms/resource/93/3487593_image3_1.jpg",
"cpyrhtDivCd": "Type1",
"serialnum": "3487593_8"
},
{
"contentid": "126508",
"originimgurl": "http://tong.visitkorea.or.kr/cms/resource/95/3487595_image2_1.jpg",
"imgname": "경복궁",
"smallimageurl": "http://tong.visitkorea.or.kr/cms/resource/95/3487595_image3_1.jpg",
"cpyrhtDivCd": "Type1",
"serialnum": "3487595_6"
},
{
"contentid": "126508",
"originimgurl": "http://tong.visitkorea.or.kr/cms/resource/97/3487597_image2_1.jpg",
"imgname": "경복궁",
"smallimageurl": "http://tong.visitkorea.or.kr/cms/resource/97/3487597_image3_1.jpg",
"cpyrhtDivCd": "Type1",
"serialnum": "3487597_7"
},
{
"contentid": "126508",
"originimgurl": "http://tong.visitkorea.or.kr/cms/resource/98/3487598_image2_1.jpg",
"imgname": "경복궁",
"smallimageurl": "http://tong.visitkorea.or.kr/cms/resource/98/3487598_image3_1.jpg",
"cpyrhtDivCd": "Type1",
"serialnum": "3487598_3"
},
{
"contentid": "126508",
"originimgurl": "http://tong.visitkorea.or.kr/cms/resource/99/3487599_image2_1.jpg",
"imgname": "경복궁",
"smallimageurl": "http://tong.visitkorea.or.kr/cms/resource/99/3487599_image3_1.jpg",
"cpyrhtDivCd": "Type1",
"serialnum": "3487599_5"
},
{
"contentid": "126508",
"originimgurl": "http://tong.visitkorea.or.kr/cms/resource/01/3487601_image2_1.jpg",
"imgname": "경복궁",
"smallimageurl": "http://tong.visitkorea.or.kr/cms/resource/01/3487601_image3_1.jpg",
"cpyrhtDivCd": "Type1",
"serialnum": "3487601_1"
},
{
"contentid": "126508",
"originimgurl": "http://tong.visitkorea.or.kr/cms/resource/22/2678622_image2_1.jpg",
"imgname": "경복궁_사진갤러리",
"smallimageurl": "http://tong.visitkorea.or.kr/cms/resource/22/2678622_image3_1.jpg",
"cpyrhtDivCd": "Type3",
"serialnum": "2678622_11"
},
{
"contentid": "126508",
"originimgurl": "http://tong.visitkorea.or.kr/cms/resource/27/2678627_image2_1.jpg",
"imgname": "경복 궁_사진갤러리",
"smallimageurl": "http://tong.visitkorea.or.kr/cms/resource/27/2678627_image3_1.jpg",
"cpyrhtDivCd": "Type3",
"serialnum": "2678627_12"
}
]
},
"numOfRows": 10,
"pageNo": 1,
"totalCount": 12
}
}
}