오늘은 카카오맵의 즐겨찾기 목록을 엑셀로 내보내는 과정을 포스팅해본다.
네이버지도의 즐겨찾기 목록을 내보내는 과정은 아래 포스팅 참고!
https://blog.naver.com/kimhongsi17/222663699179
준비물
로그인된 카카오맵, 만들어놓은 즐겨찾기 목록
카카오맵에서 요소 복사해오기
Ctrl + Shift + I로 개발자 도구 켜기
좌측 상단의 "검사할 페이지 요소 선택" 버튼 클릭
즐겨찾기 가장 상단의 아이템 선택
그러면 <div class = "fatoriteInformationBundle"~ 부분이 선택됨
조금 더 위로 올라가서 "<div data-id = "list" class "FavoriteBodyList" ~ 부분을 선택하면
이렇게 전체가 파랗게 처리된다.
(이렇게 즐겨찾기 목록이 저장되어있구나 확인 가능)
그 부분에서 우클릭 > 복사 > 요소복사
하여
이 부분을 파이썬에 넣을 예정
파이썬으로 원하는 부분만 찾아 정리하기
(전체 코드는 가장 아래에)
from bs4 import BeautifulSoup
로 뷰티풀스프 import
page = """
"""
"""와 """ 사이에 방금 요소 복사해둔 내용 붙여넣기
page = BeautifulSoup(page, "html.parser")
print(page)
뷰티풀스프로 요소 복사한 내용을 parse해주기
이제 여기부터가 조금 어려웠음
내가 원하는 것은 장소명과 주소인데
장소명이 들어있는 곳은 <a class = "link_txt" ~ 부분이고
주소가 들어있는 곳은 <span class = "desc_region"> ~ 부분이다.
따라서 코드에
stars = page.findAll("a","link_txt" )
addresses = page.findAll("span","desc_region" )
를 넣는다.
stars는 장소명, addresses는 주소이다.
각각 쳐보면 이렇게 결과가 나온다.
대괄호 안에 있어 리스트의 형태로 저장된 것을 알 수 있다.
리스트이기 때문에 인덱스 숫자를 넣어 아래와 같이 첫번째, 두번째 요소를 출력해볼 수 있다.
이제 쓸데 없는 부분은 지워야 한다.
text.split을 이용해 > 부분을 없애면 아래와 같이 장소명만 나온다.
그런데 대괄호가 붙어있으니 이것도 없애야 한다. 이는 [0]을 붙여 리스트의 첫번째 내용을 불러오는 것으로 해결 가능하다.
star_result와 star라는 이름으로 빈 리스트를 만들고
아래처럼 반복문으로 stars(장소명)의 개수만큼 반복되도록 했다.
그리고 반복된 후 append를 통해 빈 리스트에 하나씩 결과물을 넣어주도록 했다.
그러면 star_list는 아래와 같이 나온다.
마찬가지로 주소에 대해서도 이렇게 써준다.
현재는 리스트의 형태인데 판다스를 이용해 표의 형태로 만들어야 한다.
pd.DataFrame을 이용해 각 리스트를 표로 만들었다.
그런 후 concat을 이용해 두 열을 합쳐주었다.
그 후 이렇게 csv 파일을 만들어낸다. 인코딩을 넣지 않으면 깨지니 주의한다.
전체코드
from urllib.request import Request,urlopen
from bs4 import BeautifulSoup
import pandas as pd
page = """
"""
page = BeautifulSoup(page, "html.parser")
stars = page.findAll("a","link_txt" )
addresses = page.findAll("span","desc_region" )
star_result = []
star = []
for i in range(len(stars)):
star = stars[i].text.split(">")[0]
star_result.append(star)
address_result = []
address = []
for i in range(len(addresses)):
address = addresses[i].text.split(">")[0]
address_result.append(address)
df1 = pd.DataFrame({'star_result':star_result})
df2 = pd.DataFrame({'address_result':address_result})
df = pd.concat([df1, df2],axis = 0 or 1)
df.to_csv("myfavorites.csv", encoding = "CP949")
구글맵 API로 지오코딩하기
이제 이 주소를 가지고 XY 좌표(경위도 좌표)를 구해보자.
방법은 위의 포스팅 참고!
import pandas as pd
import numpy as np
from urllib.request import urlopen, Request
from bs4 import BeautifulSoup
from urllib.parse import quote
from tqdm.notebook import tqdm
data = []
for ADDRESS in tqdm(df["address_result"]):
API_KEY = "당신의_key"
API_TYPE = "xml"
url = f"https://maps.googleapis.com/maps/api/geocode/{API_TYPE}?address={quote(ADDRESS)}&key={API_KEY}"
req = Request(url)
page = urlopen(req)
page = BeautifulSoup(page, "html.parser")
page.findAll("lat")
lat = page.findAll("lat")[0].text
lng = page.findAll("lng")[0].text
result = [ADDRESS, lat, lng]
data.append(result)
myfavorites_XY = pd.DataFrame(data, columns = ["주소", "위도", "경도"])
myfavorites_XY.to_csv("myfavorites_XY.csv", encoding = "CP949")
그러면 이렇게 위도와 경도가 만들어진다.
ArcGIS에서 지도로 시각화하기
를 수행한다.
시각화까지 끝!
'🖥️ IT, 컴퓨터 > 🐍 Python' 카테고리의 다른 글
[Python] 파이썬 가상환경 만들기 (0) | 2023.03.16 |
---|---|
[Python] 해당 폴더 안에 있는 파일들의 이름 불러오기 (0) | 2023.03.07 |
[Python] 주피터 노트북에서 파이썬 버전 확인하기 (0) | 2023.03.06 |
[Python] 파이썬 site-packages 경로 (0) | 2023.03.01 |
[python] 하버사인(Harversine) 설치 (0) | 2023.03.01 |
댓글