KIRING ํ๋ก์ ํธ ์ ์ผํ์ผ๋ก, ๋ค์ด๋ฒ์ง๋์์ ์์์ ์ ๋ณด๋ฅผ ์๋์ผ๋ก ์์งํ๊ณ ,
๋ฐ์ดํฐ๋ฅผ ์ ์ ๋ฐ ํ์คํํ์ฌ ์์
ํ์ผ๋ก ์ ์ฅํ๋ Python ๊ธฐ๋ฐ ํฌ๋กค๋ฌ์
๋๋ค.
-
Selenium์ ํ์ฉํ์ฌ ๋ค์ด๋ฒ์ง๋ ์นํ์ด์ง๋ฅผ ์ง์ ์ ์ดํฉ๋๋ค.
-
๋ค์ด๋ฒ์ง๋์ iframe ๊ตฌ์กฐ๋ฅผ ๋ถ์ํ์ฌ, ์์์ ๋ฆฌ์คํธ์ ์์ธ ์ ๋ณด๋ฅผ ์์ ์ ์ผ๋ก ์ถ์ถํฉ๋๋ค.
-
๋์ ๋ก๋ฉ/์คํฌ๋กค ๋ฑ ์ค์ ์ฌ์ฉ์ ํ๊ฒฝ์ ์ต๋ํ ๋ชจ๋ฐฉํ์ฌ ๋ฐ์ดํฐ ๋๋ฝ์์ด ์์งํฉ๋๋ค.
-
์์์ ์ ์ด๋ฆ, ์นดํ ๊ณ ๋ฆฌ, ์ฃผ์, ์ ํ๋ฒํธ, ๋ํ ์ด๋ฏธ์ง, ๋ฉ๋ด ๋ฑ ๋ค์ํ ์ ๋ณด๋ฅผ ์์งํฉ๋๋ค.
-
์์ธ ํ์ด์ง ๋ด ์คํฌ๋กค ๋ฐ ๋ฒํผ ํด๋ฆญ ์๋ํ๋ฅผ ํตํด ์ถ๊ฐ ์ ๋ณด๋ฅผ ์์ ์ ์ผ๋ก ํ๋ณดํฉ๋๋ค.
-
์ฃผ์ ์ ๋ณด๋ฅผ ์นด์นด์ค ์ง๋ API์ ์ฐ๋ํ์ฌ ์๋, ๊ฒฝ๋๋ก ๋ณํํฉ๋๋ค.
-
ํ๊ฒฝ๋ณ์(.env)๋ก API Key๋ฅผ ๊ด๋ฆฌํ์ฌ ๋ณด์์ฑ์ ๋์์ต๋๋ค.
-
pandas์ openpyxl์ ํ์ฉํด ๋ฐ์ดํฐํ๋ ์์ ์์ ํ์ผ(.xlsx)๋ก ์ ์ฅํฉ๋๋ค.
-
๋ฐ์ดํฐ ์ ์ ๋ฐ ์์ธ์ฒ๋ฆฌ๋ฅผ ํตํด ์ค์ ํ์ฉ์ด ๊ฐ๋ฅํ ๋ฐ์ดํฐ์ ์ ์์ฑํฉ๋๋ค.
๐ฆkiring-map-crawler
โฃ ๐.env
โฃ ๐.gitignore
โฃ ๐geocoding.py # ์นด์นด์ค ์ง๋ API ์ฐ๋ ๋ฐ ์ขํ ๋ณํ
โฃ ๐naver_map_crawler.py # ๋ฉ์ธ ํฌ๋กค๋ง ๋ก์ง
โฃ ๐scroll_utils.py # ์๋ ์คํฌ๋กค ์ ํธ๋ฆฌํฐ
โ ๐focus_utils.py # iframe ํฌ์ปค์ฑ ์ ํธ๋ฆฌํฐ (๋ฆฌ์คํธ/์์ธ)-
ํฌ๋กค๋ฌ์ ๋ฉ์ธ ์ํธ๋ฆฌํฌ์ธํธ์ ๋๋ค.
-
Selenium์ผ๋ก ๋ค์ด๋ฒ์ง๋ ํ์ด์ง๋ฅผ ์ด๊ณ , ์์์ ๋ฆฌ์คํธ/์์ธ์ ๋ณด๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ์์งํฉ๋๋ค.
-
๊ฐ ์์ ๋ณ ์์ธ ์ฒ๋ฆฌ ๋ฐ ๋ฐ์ดํฐ ์ ์ ๋ก์ง์ด ํฌํจ๋์ด ์์ต๋๋ค.
-
์นด์นด์ค ์ง๋ REST API๋ฅผ ํ์ฉํ ์ฃผ์ โ ์ขํ(์๋, ๊ฒฝ๋) ๋ณํ์ ๋ด๋นํฉ๋๋ค.
-
ํ๊ฒฝ๋ณ์์์ API๋ฅผ ์๋์ผ๋ก ์ฝ์ด์ ๋ณด์์ฑ์ ํ๋ณดํฉ๋๋ค.
-
๋ค์ด๋ฒ์ง๋์ ๊ฐ์ด ๋์ ์ผ๋ก ๋ก๋ฉ๋๋ ํ์ด์ง์์ ์คํฌ๋กค ์๋ํ๋ฅผ ์ง์ํฉ๋๋ค.
-
๋ฆฌ์คํธ/์์ธํ์ด์ง ๋ฑ ๋ค์ํ ์ํฉ์ ๋ง๋ ์คํฌ๋กค ํจ์๊ฐ ์ ๊ณต๋ฉ๋๋ค.
-
๋ค์ด๋ฒ์ง๋ ๋ด ์์์ ๋ฆฌ์คํธ/์์ธ ์ ๋ณด iframe ํฌ์ปค์ค ์ค์์นญ์ ๋ด๋นํฉ๋๋ค.
-
ํฌ๋กค๋ง ์ฝ๋์์ iframe ์ ํ์ด ํ์ํ ๊ตฌ๊ฐ์ importํ์ฌ ์ฌ์ฉํฉ๋๋ค.
-
ํ์ ํจํค์ง ์ค์น
pip install -r requirements.txt
-
์นด์นด์ค REST API ํค ๋ฐ๊ธ ํ .env ํ์ผ์ ๋ฑ๋ก
KAKAO_REST_API_KEY=๋ฐ๊ธ๋ฐ์_ํค
-
์คํฌ๋ฆฝํธ ์คํ
python naver_map_crawler.py
-
์์ ํ์ผ ํ์ธ
- ์คํ ํด๋ (๋๋ ๋ณ๋ ์ง์ ๊ฒฝ๋ก)์ ๊ฒฐ๊ณผ ํ์ผ์ด ์์ฑ๋ฉ๋๋ค.
