Google api 매장 데이터
안녕하세요 현재 네이버맵 대신 구글맵 api를 사용중인데 아무리 찾아봐도 선생님 stores.json 값처럼 json데이터를 찾을수가없네요 ㅠㅠ 일단 현재 그냥 stores.json 선생님이 가지고있는데이터 사용중이긴한데 다른질문 답변보니 크롤링하셔서 데이터를 만드신거같은데 혹시 저의경우에는 방법이있을까요??
답변 1
0
안녕하세요ㅎㅎ 말씀하신대로 해외에서 google map을 사용하신다면, 네이버 지도 크롤링만으로는 부족할 것 같습니다. 그래서 구글맵(https://www.google.co.kr/maps)을 어떻게 크롤링하면 좋을지 생각해보았습니다!
간단한 코드를 아래에 적어보겠습니다. 아래 코드를 기초로 더 발전시켜서 원하시는 정보를 가져오면 좋을 것 같습니다.
1. 네이버 크롤링과 마찬가지로 selenium과 beatifulsoup4 같은 크롤링 라이브러리가 필요합니다.
(참고로 저는 selenium 3.0.0, beatifulsoup4 4.9.3 버전을 사용했습니다.)
# 필요한 selenium API import
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
# 필요한 beautifulSoup import
from bs4 import BeautifulSoup as bs
import time
def crawling():
# selenium 세팅
driver = webdriver.Chrome('./chromedriver')
# google map 사이트 열기
driver.get(f'https://www.google.co.kr/maps')
time.sleep(5)
# google map 검색 input에 '펠른'을 입력
text_input = driver.find_element(By.ID, "searchboxinput")
ActionChains(driver).send_keys_to_element(text_input, "펠른").perform()
time.sleep(3)
# enter key를 눌러서 매장 검색
text_input.send_keys(Keys.RETURN)
time.sleep(3)
# beautifulsoup 세팅
html = driver.page_source
soup = bs(html, "html.parser")
# 매장 이름에 해당하는 노드의 selector를 복사해서 붙여넣기(개발자 도구의 copy selector)
name = soup.select_one('#QA0Szd > div > div > div.w6VYqd > div.bJzME.tTVLSc > div > div.e07Vkf.kA9KIf > div > div > div.TIHn2 > div > div.lMbq3e > div:nth-child(1) > h1').get_text()
print(name)
# 위경도가 URL에 적혀있으므로 현재 url을 얻기
get_url = driver.current_url
print(str(get_url))
if __name__ == '__main__':
crawling()2. 코드를 실행하면
펠른 브루잉바
https://www.google.co.kr/maps/place/%ED%8E%A0%EB%A5%B8+%EB%B8%8C%EB%A3%A8%EC%9E%89%EB%B0%94/data=!3m1!4b1!4m6!3m5!1s0x357c99514d48a9f3:0xea60e8e4d8899ae4!8m2!3d37.5622152!4d126.9208748!16s%2Fg%2F11fslgppk2가 출력되는 것을 확인할 수 있습니다.
3. 이처럼 매장 이름이나 위경도(위의 url을 parsing해서 얻을 수 있음) 등을 얻은 후 json 파일로 만들면 될 것 같습니다.
질문자님의 상황이나 수준을 정확히 모르기때문에 일단 이렇게 코드로 답변드렸습니다! 크롤링이 익숙하시다면 위의 방식처럼 구글맵을 크롤링하여 원하는 정보를 얻으면 될 것 같습니다. 코드 이해에 어려움이 있다면 selenium 문서 등을 살펴보시거나 댓글 남겨주시길 바랍니다😇
API 라우터를 사용해야 하는 경우에 대해
1
150
1
키보드 어떤 거 사용하시나요
1
352
1
next.js 멀티플 런타임 관련해서 질문 올립니다..
1
358
2
아주 기초적인 질문입니다.
1
322
1
서버사이드 렌더링을 할 때, 서버는 어디에 있는 건가요?
1
1170
2
수업을 듣다가 SSR에 관하여..
1
551
2
interface 와 type
1
376
1
엘리맨트들의 자식관계가 어떻게 이렇게 되나 궁금합니다.
1
384
1
onLoad함수 (script태그의 onLoad X)
1
426
1
dynamic에 대한 질문
1
447
1
SSR vs SSG
1
476
2
NoSSR 관련한 질문입니다:)
1
376
1
a tag 질문 !
1
327
2
8분 20초 배포 관련
1
324
2
안녕하세요! 구글 서치 콘솔에 등록하는 도중 다음 오류가 뜹니다
0
2679
2
emotion styles 파일이 빌드시 경고로 뜹니다.
1
438
1
naver map 이 출력되지 않습니다.
1
481
1
페이지에 site맵 존재시 next Link는 csr 처럼 싹가져오게 되나요?
1
264
2
Failed to load resource: the server responded with a status of 404 ()
1
1034
2
VSCode 익스텐션 궁금합니다.
1
356
1
상태관리 질문 있습니다!
1
449
1
swr에 대한 질문입니다. (용어 관련)
1
372
1
swr 질문입니다!
1
337
1
안녕하세요. span 태그의 부모에 display: flex 를 적용하는데 왜 적용되는지 아무리 생각해도 이해가 되지 않아 질문드립니다.
1
679
2





