"주소"를 검색하여 '장소명"을 불러올 수 는 없을까요?

kakaomap api를 통해 가져올 수 있는 건 지번주소, 도로명주소, 위경도 좌표인거 같습니다. 기존의 주소와 장소명이 맞는지 확인하기 위해 '주소’를 입력하여 주소에 등록된 '장소명’을 가져오고 싶은데 방법이 없을꺄요?

import requests
import pandas as pd
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.util.retry import Retry

API 키 설정

KAKAO_API_KEY = “kakaomap api

주소로 장소명과 좌표를 검색하는 함수

def get_place_details(address):
url = “https://dapi.kakao.com/v2/local/search/address.json
headers = {“Authorization”: f"KakaoAK {KAKAO_API_KEY}"}
params = {“query”: address}

# 세션 및 재시도 설정
session = requests.Session()
retries = Retry(total=5, backoff_factor=1, status_forcelist=[502, 503, 504])
adapter = HTTPAdapter(max_retries=retries)
session.mount("http://", adapter)
session.mount("https://", adapter)

try:
    response = session.get(url, headers=headers, params=params, timeout=10)
    response.raise_for_status()  # HTTP 에러가 발생하면 예외를 발생시킴
except requests.exceptions.RequestException as e:
    print(f"Error: {e}")
    return None

result = response.json()
if "documents" in result and len(result["documents"]) > 0:
    places = []
    for document in result["documents"]:
        place = {
            "장소명": document["address_name"] if "address_name" in document else address,
            "위도": document["y"],
            "경도": document["x"]
        }
        places.append(place)
    return places
else:
    print(f"Error: No documents found for address {address}")
    return None

엑셀 파일에서 데이터 불러오기

df = pd.read_excel(‘C:\OneDrive\workspace\GeoLocation\places_address.xlsx’, engine=‘openpyxl’)

데이터프레임의 컬럼 이름 출력

print(“컬럼 이름:”, df.columns)

“주소” 컬럼이 실제로 존재하는지 확인

address_column = “주소” # 올바른 컬럼 이름으로 수정

if address_column not in df.columns:
raise KeyError(f"‘{address_column}’ 컬럼이 데이터프레임에 존재하지 않습니다.")

주소를 검색하고 데이터프레임에 추가

data =
missing_addresses =

for index, row in df.iterrows():
address = row[address_column].strip() # 주소를 검색할 키워드로 사용
places = get_place_details(address)
if places:
for place in places:
data.append({
“ID”: row[“ID”], # ‘ID’ 컬럼을 사용하여 수정
“기기명”: row[“기기명”], # ‘기기명’ 컬럼 추가
“주소”: row[address_column],
“장소명”: place[“장소명”],
“위도”: place[“위도”],
“경도”: place[“경도”]
})
else:
data.append({
“ID”: row[“ID”], # ‘ID’ 컬럼을 사용하여 수정
“기기명”: row[“기기명”], # ‘기기명’ 컬럼 추가
“주소”: row[address_column],
“장소명”: None,
“위도”: None,
“경도”: None
})
missing_addresses.append({“주소”: address}) # 누락된 주소를 딕셔너리 형태로 추가

result_df = pd.DataFrame(data)

데이터프레임을 엑셀 파일로 저장

result_df.to_excel(“C:\OneDrive\workspace\GeoLocation\places_coordinates_result_updated.xlsx”, index=False)

누락된 주소를 데이터프레임으로 변환하여 엑셀 파일로 저장

missing_df = pd.DataFrame(missing_addresses)
missing_df.to_excel(“C\OneDrive\workspace\GeoLocation\missing_addresses.xlsx”, index=False)

print(“엑셀 파일이 생성되었습니다.”)
print(f"누락된 주소가 {len(missing_addresses)}건 있습니다. ‘missing_addresses.xlsx’ 파일을 확인하세요.")

키워드 검색으로 장소명을 검색해서 저장된 장소의 주소를 비교하는 방법을 고려해 주세요.
그리고 지도/로컬 API는 실시간 호출 사용만 허용하고 있습니다.
데이터 저장은 허용되지 않는 점 참고 부탁드립니다.