From b6ecb89736ea5eff3e560ec1d4dd8c4413b4c351 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Sun, 18 Jan 2026 12:31:37 +0000 Subject: [PATCH 1/4] =?UTF-8?q?MapSee-AI=20=EB=B2=84=EC=A0=84=20=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=20:=20docs=20:=20v1.0.1=20README=20=EB=B2=84=EC=A0=84?= =?UTF-8?q?=20=EC=A0=95=EB=B3=B4=20=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8=20?= =?UTF-8?q?[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index de0fb34..d41b43a 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # MapSee-AI -## 최신 버전 : v0.1.3 (2026-01-18) +## 최신 버전 : v1.0.1 (2026-01-18) [전체 버전 기록 보기](CHANGELOG.md) From 8b14c2c94e12f8845579d1fe0b2a145f719011fe Mon Sep 17 00:00:00 2001 From: SUH SAECHAN <83532821+Cassiiopeia@users.noreply.github.com> Date: Sun, 18 Jan 2026 21:49:41 +0900 Subject: [PATCH 2/4] =?UTF-8?q?=EC=9E=A5=EC=86=8C=20=EC=A0=95=EB=B3=B4=20?= =?UTF-8?q?=EC=B6=94=EC=B6=9C=EA=B0=92=20=EC=A4=91=20=EA=B8=B8=EC=B0=BE?= =?UTF-8?q?=EA=B8=B0=20=EC=95=88=EB=82=B4=20Section=20=EC=A0=95=EB=B3=B4?= =?UTF-8?q?=EA=B0=80=20=EB=81=9D=EA=B9=8C=EC=A7=80=20=EC=B6=9C=EB=A0=A5?= =?UTF-8?q?=EB=90=98=EC=A7=80=EC=95=8A=EB=8A=94=20=EB=AC=B8=EC=A0=9C=20:?= =?UTF-8?q?=20feat=20:=20=20#=20"=EC=B0=BE=EC=95=84=EA=B0=80=EB=8A=94=20?= =?UTF-8?q?=EA=B8=B8"=20=EB=8D=94=EB=B3=B4=EA=B8=B0=20=EB=B2=84=ED=8A=BC?= =?UTF-8?q?=20=ED=81=B4=EB=A6=AD=20(=EC=A0=84=EC=B2=B4=20=ED=85=8D?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=ED=8E=BC=EC=B9=98=EA=B8=B0)=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20https://github.com/MapSee-Lab/MapSee-AI/issues/16?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scraper/platforms/naver_map_scraper.py | 29 ++++++++++++++----- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/src/services/scraper/platforms/naver_map_scraper.py b/src/services/scraper/platforms/naver_map_scraper.py index 7d2473a..9c23079 100644 --- a/src/services/scraper/platforms/naver_map_scraper.py +++ b/src/services/scraper/platforms/naver_map_scraper.py @@ -2,7 +2,6 @@ 네이버 지도 장소 스크래핑 로직 """ import logging -import asyncio from urllib.parse import quote from playwright.async_api import async_playwright @@ -14,7 +13,6 @@ parse_rating, extract_naver_place_id_from_url, SCRAPE_TIMEOUT_MS, - PAGE_LOAD_WAIT_SEC, ELEMENT_WAIT_TIMEOUT_MS, MAX_IMAGE_COUNT, ) @@ -107,9 +105,8 @@ async def search_and_scrape(self, query: str) -> NaverPlaceInfo: logger.info("첫 번째 결과 클릭 완료, 상세 페이지 로드 대기...") - # [5/7] 상세 페이지 로드 대기 + # [5/7] 상세 페이지 로드 대기 (entryIframe이 나타날 때까지) logger.info("[5/7] 상세 페이지 로드 대기...") - await asyncio.sleep(PAGE_LOAD_WAIT_SEC) # entryIframe 대기 logger.info("entryIframe 대기...") @@ -149,8 +146,22 @@ async def search_and_scrape(self, query: str) -> NaverPlaceInfo: logger.debug(f"entry_frame URL: {entry_frame.url}") - # 추가 대기: DOM이 완전히 로드될 때까지 - await asyncio.sleep(2) + # DOM 완전 로드 대기 (주소 요소가 나타날 때까지) + try: + await entry_frame.wait_for_selector('span.LDgIH', timeout=ELEMENT_WAIT_TIMEOUT_MS) + except Exception: + pass # 주소가 없는 장소도 있으므로 무시 + + # "찾아가는 길" 더보기 버튼 클릭 (전체 텍스트 펼치기) + try: + directions_expand_button = entry_frame.locator('a.xHaT3[aria-expanded="false"]') + if await directions_expand_button.count() > 0: + await directions_expand_button.first.click() + # 펼쳐진 상태 대기 + await entry_frame.wait_for_selector('a.xHaT3[aria-expanded="true"]', timeout=2000) + logger.debug("찾아가는 길 더보기 클릭 완료") + except Exception as error: + logger.debug(f"찾아가는 길 더보기 클릭 실패 (무시): {error}") # iframe 내에서 JavaScript 실행 info = await entry_frame.evaluate(f'''() => {{ @@ -204,8 +215,10 @@ async def search_and_scrape(self, query: str) -> NaverPlaceInfo: const subwayElement = document.querySelector('div.nZapA'); result.subway_info = subwayElement ? subwayElement.textContent.trim() : null; - // 찾아가는 길 - const directionsElement = document.querySelector('span.zPfVt') || + // 찾아가는 길 (전체 텍스트 - 펼쳐진 상태 우선) + const expandedDirections = document.querySelector('a.xHaT3[aria-expanded="true"] span.zPfVt'); + const directionsElement = expandedDirections || + document.querySelector('span.zPfVt') || document.querySelector('.place_section_content .zPfVt'); result.directions_text = directionsElement ? directionsElement.textContent.trim() : null; From ae768221a98a301b639758707d8ade2b58e321d6 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Sun, 18 Jan 2026 12:49:53 +0000 Subject: [PATCH 3/4] =?UTF-8?q?MapSee-AI=20=EB=B2=84=EC=A0=84=20=EC=A0=95?= =?UTF-8?q?=EB=B3=B4=20=EA=B4=80=EB=A6=AC:=20chore:=20=EB=B2=84=EC=A0=84?= =?UTF-8?q?=201.0.2=20[skip=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- version.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/version.yml b/version.yml index 6bd17ea..63fc0c0 100644 --- a/version.yml +++ b/version.yml @@ -34,11 +34,11 @@ # - 버전은 항상 높은 버전으로 자동 동기화됩니다 # =================================================================== -version: "1.0.1" -version_code: 17 # app build number +version: "1.0.2" +version_code: 18 # app build number project_type: "python" # spring, flutter, react, react-native, react-native-expo, node, python, basic metadata: - last_updated: "2026-01-18 12:29:56" + last_updated: "2026-01-18 12:49:53" last_updated_by: "Cassiiopeia" default_branch: "main" integrated_from: "SUH-DEVOPS-TEMPLATE" From 997d11e588767b542880345b0033f49a895e26d6 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Sun, 18 Jan 2026 12:51:14 +0000 Subject: [PATCH 4/4] =?UTF-8?q?MapSee-AI=20=EB=B2=84=EC=A0=84=20=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=20:=20docs=20:=20v1.0.2=20=EB=A6=B4=EB=A6=AC=EC=A6=88?= =?UTF-8?q?=20=EB=AC=B8=EC=84=9C=20=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8=20?= =?UTF-8?q?(PR=20#17)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.json | 30 +++++++++++++++++++++++++++--- CHANGELOG.md | 18 ++++++++++++++++-- 2 files changed, 43 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.json b/CHANGELOG.json index 99b791e..7eee7dd 100644 --- a/CHANGELOG.json +++ b/CHANGELOG.json @@ -1,11 +1,35 @@ { "metadata": { - "lastUpdated": "2026-01-18T12:31:21Z", - "currentVersion": "1.0.1", + "lastUpdated": "2026-01-18T12:51:13Z", + "currentVersion": "1.0.2", "projectType": "python", - "totalReleases": 6 + "totalReleases": 7 }, "releases": [ + { + "version": "1.0.2", + "project_type": "python", + "date": "2026-01-18", + "pr_number": 17, + "raw_summary": "## Summary by CodeRabbit\n\n# 릴리스 노트\n\n* **Chores**\n * 버전을 v1.0.2로 업데이트했습니다.\n * 문서를 최신 버전 정보로 업데이트했습니다.\n\n* **Bug Fixes**\n * 지도 데이터 수집 시 안정성을 개선했습니다.\n * 주소 추출 로직을 강화하고 더 견고한 오류 처리를 추가했습니다.", + "parsed_changes": { + "chores": { + "title": "Chores", + "items": [ + "버전을 v1.0.2로 업데이트했습니다.", + "문서를 최신 버전 정보로 업데이트했습니다." + ] + }, + "bug_fixes": { + "title": "Bug Fixes", + "items": [ + "지도 데이터 수집 시 안정성을 개선했습니다.", + "주소 추출 로직을 강화하고 더 견고한 오류 처리를 추가했습니다." + ] + } + }, + "parse_method": "markdown" + }, { "version": "1.0.1", "project_type": "python", diff --git a/CHANGELOG.md b/CHANGELOG.md index caf4140..e989677 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,21 @@ # Changelog -**현재 버전:** 1.0.1 -**마지막 업데이트:** 2026-01-18T12:31:21Z +**현재 버전:** 1.0.2 +**마지막 업데이트:** 2026-01-18T12:51:13Z + +--- + +## [1.0.2] - 2026-01-18 + +**PR:** #17 + +**Chores** +- 버전을 v1.0.2로 업데이트했습니다. +- 문서를 최신 버전 정보로 업데이트했습니다. + +**Bug Fixes** +- 지도 데이터 수집 시 안정성을 개선했습니다. +- 주소 추출 로직을 강화하고 더 견고한 오류 처리를 추가했습니다. ---