Loading the catalog…
Loading the catalog…
짧았지만 꽉 찼던 한 주😊 📍 이번 주를 돌아보며 추석 연휴 전 3일뿐인 짧은 주였지만, 내용은 오히려 더 꽉 찼던 것 같다. 웹크롤링을 마무리하고 Git/GitHub를 배운 뒤, 바로 첫 팀 프로젝트에 들어갔다. 배운 걸 정리할 틈도 없이 바로 써먹어야 하는 상황이었는데, 오히려 그래서 더 빨리 손에 붙은 느낌이다. 특히 Git은 그동안 혼자 TIL 올릴 때만 쓰던 도구였는데, 이번 주에 브랜치와 Pull Request를 배우면서 "여러 명이 같은 코드를 건드려도 안전한 이유"를 이해하게 됐다. 팀 프로젝트에서 바로 써볼 수 있어서 더 와닿았다. 🐍 이번 주 배운 것 웹크롤링 HTML 기본 구조와 주요 태그( a , h1~h6 , ul/ol/li , table , div ), id/class 속성, CSS 선택자 정적 크롤링: requests + BeautifulSoup, select() 로 원하는 태그 찾고 .text 로 추출 동적 크롤링: Selenium으로 실제 브라우저를 조작( .click() , .send_keys() ) 생성형 AI를 활용한 크롤링 코드 작성 (마켓컬리 리뷰 수집, 서울시 공공데이터 수집) Git & GitHub 로컬 저장소 ↔ 원격 저장소, push/pull의 개념 버전 관리 3단계: Changes → Staging → Commit Branch: 원본(main)을 보호하는 안전한 복사본 GitHub Flow: 브랜치 생성 → 작업·commit → push → Pull Request → Merge Conflict(충돌) 해결: Merge Editor에서 내 코드 / 상대 코드 중 선택 팀 프로젝트 시작 주제: 전국 자동차 신규등록 현황 및 기업 FAQ 조회 시스템 기획서, DB 설계서(ERD), 화면 기획서, 개발 전 합의 체크리스트 작성 및 팀원 공유 📌 트러블슈팅 1. Selenium — 다음 페이지 버튼이 클릭되지 않음 문제: 리뷰를 여러 페이지에서 수집하려고 다음 페이지 버튼을 클릭했는데, ElementClickInterceptedException 에러가 발생하며 다음 페이지로 넘어가지 않았다. 원인: 버튼이 화면에 보이긴 하지만, 다른 요소(팝업·고정 헤더 등)가 그 위를 덮고 있으면 Selenium의 일반 .click() 은 "가려져 있어서 못 누른다"고 판단해 에러를 낸다. (1) 수정 전 next_btn = driver.find_elements(By.CSS_SELECTOR, "button.css-frxx9h")[-1] next_btn.click() (2) 수정 후 next_btn = driver.find_elements(By.CSS_SELECTOR, "button.css-frxx9h")[-1] # 클릭 대상을 화면 중앙으로 스크롤 driver.execute_script("arguments[0].scrollIntoView({block: 'center'});", next_btn) time.sleep(0.8) # JS로 직접 클릭 이벤트 실행 (가려져 있어도 클릭 가능) driver.execute_script("arguments[0].click();", next_btn) (3) 배운 점 Selenium의 .click() 은 "사람이 실제로 누를 수 있는 상태"여야 동작한다는 걸 알게 됐다. execute_script 로 JS 클릭 이벤트를 직접 실행하면, 다른 요소가 겹쳐 있어도 우회해서 클릭할 수 있다. 2. 공공 API — 데이터가 없는 기간을 요청했을 때 에러로 처리됨 문제: 2024년 1분기부터 2026년 2분기까지 반복 수집하는 코드를 돌렸는데, 아직 데이터가 등록되지 않은 미래 분기에서 수집이 중단됐다. 원인: API는 데이터가 없을 때 HTTP 에러를 내는 게 아니라, 정상 응답 안에 별도 상태 코드 ( INFO-200 )를 담아서 보낸다. 이걸 구분하지 않으면 "응답은 왔는데 원하는 데이터가 없는 상태"를 처리할 방법이 없다. (1) 수정 전 res = requests.get(url, timeout=15) data = res.json() rows = data[SERVICE_NAME]["row"] # 데이터가 없으면 KeyError (2) 수정 후 res = requests.get(url, timeout=15) res.raise_for_status() data = res.json() svc_data = data.get(SERVICE_NAME, {}) result_code = svc_data.get("RESULT", {}).get("CODE", "") if result_code == "INFO-200": print(f"[{quarter}] 데이터 미개설/없음 상태입니다.") return None, 0 # 에러가 아니라 '데이터 없음'으로 구분해서 넘어감 elif result_code != "INFO-000": print(f"[{quarter}] API 처리 오류 [{result_code}]") return None, 0 rows = svc_data.get("row", []) (3) 배운 점 HTTP 통신이 성공했다고 해서 원하는 데이터가 온 건 아니라는 걸 알게 됐다. 응답 내부의 상태 코드까지 확인 해야 한다. "에러"와 "데이터 없음"은 다르게 처리해야 반복 수집이 중간에 멈추지 않는다. 3. Git — 저장소를 여러 개 다룰 때 설정이 섞일까 봐 헷갈림 문제: Git 실습용으로 workspace 폴더에 새 저장소를 연결했는데, 기존에 쓰던 TIL 저장소의 설정이 덮어써지는 건 아닌지 걱정됐다. 게다가 VS Code가 여러 폴더를 한꺼번에 연 Untitled (Workspace) 상태여서 실습 폴더와 기존 폴더가 섞여 보였다. 원인: origin(원격 주소)은 각 폴더의 .git 안에 따로 저장 되어 서로 독립적이지만, git config --global 은 컴퓨터 전체에 적용 되는 설정이라는 차이를 몰랐다. (1) 확인 방법 # 각 저장소 폴더에서 실행 → 서로 다른 주소가 나오면 정상 (독립적) git remote -v # 컴퓨터 전체에 적용되는 설정 → 모든 저장소의 커밋 작성자가 여기 값으로 기록됨 git config --global user.name git config --global user.email (2) 배운 점 origin은 저장소별로 따로 관리되므로, 새 저장소를 연결해도 기존 저장소에는 영향이 없다. 반대로 --global 설정은 전부 공유되므로, 이메일이 GitHub 계정과 다르면 잔디가 안 채워질 수 있다 는 점을 주의해야 한다. VS Code에서 폴더를 열 때 Open Folder (하나만 열기)와 Add Folder to Workspace (기존 창에 추가)의 차이를 알게 됐다. ✅ Keep 배운 내용을 바로 팀 프로젝트에 적용해보는 흐름이 좋았다. Git을 배운 당일에 팀 저장소에 브랜치를 만들고 PR을 올려보니, 수업 내용이 훨씬 빨리 손에 붙었다 에러가 나면 바로 고치고 넘어가지 않고, 왜 그 에러가 났는지 원인을 이해하고 넘어가는 방식을 계속 유지하고 있다 🤔 Problem 3일뿐인 짧은 주에 크롤링 마무리 + Git + 팀 프로젝트 시작이 몰려서, 배운 내용을 충분히 복습할 시간이 부족했다 아직은 교재나 문법을 계속 찾아보면서 코드를 작성하고 있다. 개념은 이해했지만 "안 보고 처음부터 끝까지 짜는 것"은 아직 어렵다 🔥 Try 연휴 동안 API 호출 → 데이터 가공 → DB 저장 → 조회 → 화면까지 각 단계를 AI 없이 빈 파일에서 직접 써보며, 어디가 약한지 진단해보려 한다 팀 프로젝트에서 내가 맡은 파트는 먼저 직접 작성하고, AI에게는 검토만 맡기는 방식으로 진행하려 한다
What RADAR observed and classified to build this opportunity. It is what the source published, not a verification that the offer is still active.
SK Networks Family AI Camp 37기 4주차 회고💛. 짧았지만 꽉 찼던 한 주😊 📍 이번 주를 돌아보며 추석 연휴 전 3일뿐인 짧은 주였지만, 내용은 오히려 더 꽉 찼던 것 같다. 웹크롤링을 마무리하고 Git/GitHub를 배운 뒤, 바로 첫 팀 프로젝트에 들어갔다. 배운 걸 정리할 틈도 없이 바로 써먹어야 하는 상황이었는데, 오히려 그래서 더 빨리 손에 붙은 느낌이다. 특히 Git은 그동안 혼자 TIL 올릴 때만 쓰던 도구였는데, 이번 주에 브랜치와 Pull Request를 배우면서 "여러 명이 같은 코드를 건드려도 안전한 이유"를 이해하게 됐다. 팀 프로젝트에서 바로 써볼 수 있어서 더 와닿았다. 🐍 이번 주 배운 것 웹크롤링 HTML 기본 구조와 주요 태그( a , h1~h6…
Open source