N8N을 통해 공공데이터포털에 접근해 보자!! (건축물정보 불러오기)

지난번에 구글시트에서 에어테이블 데이터 옮기기를 했으니,

이제 공공데이터포털에서 내용물 찾아서 구글시트로 옮겨오면 될 것 같습니다.

하지만 역시나 한번에 되는 건 없습니다.

우리가 쉽게 얘기할 수 있는 번지 '서초동 10-2' 같은 형태로 입력하면, 이걸 법정동코드라는 10자리 코드로 바꾼 후 데이터포털에 접근해야 값을 읽어올 수 있습니다. 하지만 그 부분을 해결하지 못했습니다. 그래서 우선은 코드를 직접 입력하는 방식으로 진행해 봤습니다.

아주 간단한 내용입니다.

[On from submission]

우선 Form 제출 방식으로 입력을 받습니다. 코드를 입력해야해서 시군구코드와 법정동코드를 알아야만 가능합니다.

지번은 4자리 숫자로 입력해야하고 처리는 문자열로 합니다.

[HTTP Request]

다음으로 HTTP request를 통해 공공데이터를 불러오는 노드를 작성합니다.

HTTP 요청 2 -HTTP 요청 2 -HTTP 요청 2- ht

공공테이터포털에서 HTTP request를 실행하는 방법입니다.

우선 공공데이터 포털에 로그인하고 활용신청을 통해 API를 받습니다.

URL과 인증키를 받습니다. 인코딩/디코딩 두가지를 받는데, 주로 디코딩 키가 맞습니다.

상세설명 부분으로 들어갑니다.

한국과 중국어 텍스트가있는 페이지

건축물정보 관련해서도 이렇게나 많은 데이터가 있습니다.

원하는 걸 클릭해서 들어갑니다. 맨 위에 표제부 조회 부분으로 들어가 봤습니다.

OpenAPI 실행 준비를 클릭합니다.

테스트 화면입니다. 여기서 각 값들을 넣습니다. 필수 항목은 꼭 넣어야 하는 부분입니다.

아는 지번 하나를 선택합니다. (편의상 단독주택이 좋겠습니다.)

서비스키는 '디코딩 키'를 넣고, 시군구코드와 법정동코드는 아래 링크에 정리해 뒀습니다.

https://docs.google.com/spreadsheets/d/1u_uqCRzFxyZ6ph4yT4dpECvCFsJlelFurVyf-sN7lyk?usp=drive_fs

폐지된 것 빼고 무려 18,000개입니다. (동, 리로 분류되는 코드입니다.)

여기는 test하는 곳입니다. 필수사항과 필요한 내용들을 입력합니다.

맨 아래 open API 호출을 누르면

Curl과 Request URL을 제시해주고, 결과물을 보여줍니다.

제시된 Curl을 복사해서 HTTP Request에 Import cURL을 열어서 붙여넣습니다.

On form Submission을 한번 실행해서 데이터들이 들어온 후 내용을 추가해서 앞선 노드의 input값들과 일치시켜 줍니다.

한국어 페이지의 스크린 샷

아래와 같이 정상적으로 들어오는 걸 확인할 수 있습니다.

[Code]

그런데 이 내용이 response라는 큰 항목 안에 통째로 하나의 내용으로 들어가 있습니다.

맨 안쪽 내용만 빼내야 합니다.

그걸 위해서 코드 노드를 하나 추가합니다.

그러면 이렇게 안에 있는 데이터들만 표로 정리됩니다.

[Google Sheet]

이제 구글시트 항목을 열어서 필요한 내용을 1행에 넣어둡니다.

그리고 구글시트 노드에서 항목을 매칭시켜줍니다.

[Airtable]

이제 에어테이블에 입력해 봅니다.

** 참고로 입력하려고 하는데 새로 만든 base가 안 뜰 때가 있는데

credential 옆에 편집표시를 누른 후 reconnect를 누르고

Add a base를 통해서 새로 만든 base를 추가할 수 있습니다.

이후의 과정은 구글시트의 내용과 에어테이블의 내용을 비교해서 이미 있는 데이터면 추가하지 말고 새로운 데이터만 추가하라는 내용으로 이전에 진행했던 내용을 참고하시면 됩니다.

마지막으로 최종 에어테이블에 작성을 누르면

정상적으로 입력된 것을 확인할 수 있습니다.

검색 결과를 보여주는 Google 검색 페이지의 스크린 샷

[허들]

  • HTTP Request를 이해하고 찾아내는데 이틀을 꼬박 소비했습니다. 덕분에 조금 이해하게 된 것 같구요. 무엇보다 공공데이터포털을 접근하는 방법을 알았다는 게 가장 큰 성과입니다.

  • Response 안에 통째로 들어간 세부데이터를 밖으로 끄집어내는걸 알아내는데 또 꼬박 이틀이 걸렸습니다. 코드를 모르는 자의 한계입니다. GPT도 클로드도 심지어 N8N Assistant도 똑같은 코드를 짜주는데 다 안 맞습니다. 아래 세 줄을 알아내는데 이틀입니다.

const inputData = items[0].json.response;  // json 프로퍼티를 통해 접근
const item = inputData.body.items.item[0];
return [item];

처음엔 모든 AI가 이렇게 간단하게 짜주더군요.

items: $json[0].data

[과제]

아직 해결 못한 과제가 있습니다.

  • 입력을 코드로 하면 안됩니다. 코드표를 항상 가지고 다닐 수는 없으니까요.

    시군구와 법정동을 입력하면 18,000개의 코드를 검색해서 코드로 반환해주는 노드가 필요합니다. AI Agent도 써봤고, Supabase도 시도해 봤지만 아직 찾지 못했습니다. 이거 찾는데 3일을 보냈지만 아직도 모르겠습니다.

이것만 해결하면 이제 활용할 수 있는 방향이 무궁무진할 것 같습니다.

5
4개의 답글

👉 이 게시글도 읽어보세요