오늘의 개발일지: 웹 스크래핑 삽질에서 모듈화까지

작성일: 2025년 10월 28일
🚀 오늘의 목표: Daum.net 최신 뉴스, Python으로 가져오기!
오늘의 목표는 Python을 이용해 Daum.net의 최신 주요 뉴스를 가져오는 것이었습니다. 이 기능을 구현하기 위해 requests 라이브러리로 웹페이지에 접속하고, BeautifulSoup 라이브러리로 HTML에서 원하는 정보를 추출하는 '웹 스크래핑(Web Scraping)' 기술을 사용하기로 했습니다.
🚧 1차 시도와 교훈: 웹사이트는 살아있다!
처음에는 Daum 뉴스 페이지의 HTML 구조를 예측해서 뉴스 제목을 가져오는 코드를 작성했습니다. 하지만 웹사이트의 구조는 생각보다 자주 바뀌더군요. 제가 사용했던 CSS 선택자(Selector)가 더 이상 유효하지 않아 아무런 결과도 얻지 못했습니다.
🚧 2차 시도와 교훈: "외계어"의 등장 (인코딩 문제)
선택자를 바꿔가며 시도한 끝에 드디어 데이터를 가져오는 데 성공했지만, 결과는 본문 ë°ë¡ê°ê¸° 와 같은 알아볼 수 없는 글자들 뿐이었습니다. 이는 '인코딩(Encoding)' 문제 때문이었습니다. 웹사이트는 UTF-8이라는 방식으로 한글을 표시하는데, 제 코드가 이 방식을 제대로 인식하지 못한 것이죠.
이 문제는 HTML을 파싱할 때 인코딩 방식을 utf-8로 명확하게 지정해주어 해결할 수 있었습니다.
soup = BeautifulSoup(response.content, 'html.parser', from_encoding='utf-8')
💡 문제 해결의 결정적 열쇠: 페이지 통째로 저장하기
계속된 실패에, 저는 문제의 원인이 '웹페이지를 가져오는 것' 자체에 있는지, 아니면 '가져온 데이터에서 정보를 추출하는 것'에 있는지 확인해야 했습니다. 그래서 스크래핑한 페이지의 전체 HTML을 그대로 파일(daum_page.html)로 저장하는 전략을 사용했습니다.
결과는 대성공! 파일이 정상적으로 만들어졌고, 그 안에는 모든 웹페이지 내용이 담겨 있었습니다. 이로써 웹페이지 자체는 잘 가져오고 있으며, 단지 HTML 구조가 복잡해서 정보를 추출하는 데 어려움을 겪고 있다는 것을 명확히 알 수 있었습니다.
✨ 기능 확장 및 모듈화: 재사용 가능한 부품 만들기
이제 안정적으로 뉴스 제목을 가져올 수 있게 되었으니, 기능을 더욱 확장했습니다.
- 기사 본문 수집: 뉴스 목록 페이지에서 기사 링크(URL)들만 추출한 뒤, 다시 각 링크에 접속해 제목뿐만 아니라 기사 본문 내용까지 모두 가져오도록 코드를 수정했습니다.
- 함수로 만들기 (모듈화): 단순히 파일에 저장하고 끝나는 스크립트가 아니라, 다른 곳에서도 이 기능을 쉽게 가져다 쓸 수 있도록
doDaumSearch()라는 함수로 만들었습니다. 이 함수는 호출될 때마다 최신 뉴스 내용을 반환(return)합니다. - 다른 코드와 통합: 최종적으로, 이렇게 만든
daumSearch모듈을 원래 작업하던 메인 파일(250731-threads-naribot-posting-kanana.py)에서import하여 사용했습니다. AI에게 글 생성을 요청하는 프롬프트(prompt)에doDaumSearch()함수가 실시간으로 가져온 뉴스 내용을 동적으로 추가하여, 항상 최신 뉴스를 기반으로 새로운 콘텐츠를 만들어내도록 시스템을 완성했습니다.
오늘의 결론
단순해 보였던 뉴스 스크래핑 작업은 생각보다 많은 "삽질"을 필요로 했습니다. 하지만 선택자, 인코딩, 디버깅 전략, 그리고 모듈화에 이르기까지, 웹 개발의 기초를 다지는 값진 경험이었습니다. 역시 개발은 부딪히고 깨지면서 배우는 것 같습니다!
'파이썬 스크립트' 카테고리의 다른 글
| 🐍 Python | Raspberry Pi에서 오픈소스 LLM으로 뉴스 요약기 만들기 --- (1) | 2025.11.05 |
|---|---|
| 🐍 Python | 문자열 처리와 xlwings로 엑셀 데이터 다루기 --- (0) | 2025.11.01 |
| 🐍 Python | PC에 흩어진 .whl 파일, 한 곳으로 모으는 자동화 스크립트 개발기 (1) | 2025.10.26 |
| Eclipse에서 PyDev 오프라인 설치하는 방법 (1) | 2025.10.05 |
| 쿠팡파트너스 Open API로 국내여행 베스트 상품 조회하기 (1) | 2025.10.01 |