2025. 6. 23. 12:17ㆍ데이터분석 인턴일기
오늘의 업무
뉴스 메타 정보 수집 함수 디버깅
전체 액션 프로세스 점검 및 예외처리 로직개선
오늘은 기존 뉴스 수집 코드에서 발생하던 여러 문제들을 디버깅하고, 전체 뉴스 수집 프로세스를 구조적으로 정리했다.
작은 코드 수정 하나에도 많은 환경과 예외처리가 필요하다는 것을 체감했다.
🛠 1. 뉴스 메타 정보 수집 함수 디버깅
뉴스 본문에서 메타 정보를 추출하는 과정에서 여러 이슈가 발생했다.
특히 두 가지 주요 문제가 있었고, 이에 대한 대응 로직을 코드에 반영했다.
❗ 문제 1: aiohttp가 P3P 헤더 오류로 중단되는 이슈
aiohttp 라이브러리를 통해 요청을 보낼 경우, 일부 응답에 포함된 P3P 헤더의 잘못된 띄어쓰기 때문에 요청이 실패했다. 이를 해결하기 위해 실패 시 requests로 자동 재시도하도록 로직을 수정했다. (뉴스사이트가 문제다)

❗ 문제 2: gzip 중첩 압축 문제
일부 뉴스 링크는 gzip으로 한 번 압축된 데이터 내부에 다시 한 번 gzip이 적용되어 있어 파싱이 불가능했다. 이를 해결하기 위해 수동으로 gzip을 해제하는 조건식을 추가하여 대응했다.

🧼 개선점: BeautifulSoup 대신 정규식 기반 파싱
메타 태그 파싱에는 기존에 BeautifulSoup을 사용했지만, 효율성이 떨어지는 문제를 느꼈다. 인터넷 기사 구조는 대부분 메타 태그 위치가 고정되어 있으므로, 정규식을 통해 og:title, og:image, og:site_name을 직접 추출하도록 로직을 변경했다.
HTML 구조가 살짝 어긋날 경우 문제는 있을 수 있지만, 현재로선 실효성이 높다고 판단했다. (헤더에 오타나서 수집이 안되는 페이지도 수집이 되므로 ^^;;)
🔄 2. 뉴스 수집 전체 프로세스 점검
전체 수집 로직을 다시 점검하고 흐름을 명확히 정리했다. 수집 효율과 중복 제거 정확도를 높이기 위해 수집 조건과 필터링 절차를 재정의했다.
📌 수집 로직 순서 정리
- 키워드를 기준으로 최대 10페이지 / 200개 기사 수집
→ 수집 결과가 10개 미만이면 재수집 - 기존 DB에 있는 post_url과 비교하여 중복 제거
→ 본문 내용 기준 비교는 생략 (매일 처리하지 않기 때문에 문제 없음) - 신규 기사들에 대해 자카드 유사도 기반 중복 제거
→ 기존 기사와의 비교는 생략 - 남은 기사에서 Source, Image 등의 메타 데이터 수집 및 정리
- 최종적으로 DB에 입력
오늘은 디버깅을 통해 Fiddler를 활용한 방법을 사용해 보았다. 직접 보낸 요청과 빋은 응답을 비교하면서 문제가 어디에서 발생했는지를 눈으로 확인 할 수 있었던 좋은 경험이었다.
처음에는 코드구조도 복잡하고, 여러 라이브러리가 섞여있어서 감을 잡기 어려웠지만, 시간을 들여 하나씩 따라가다보니 이해도도 올라가고 문제해결 속도도 붙기 시작했다.
'데이터분석 인턴일기' 카테고리의 다른 글
| 인턴일기 - 27일차(챗봇용 텍스트 임베딩 & 한국어 전처리) (0) | 2025.06.23 |
|---|---|
| 인턴일기 - 26일차(에러 로그 시스템 정비 & 함수 단위 핸들링) (0) | 2025.06.23 |
| 인턴일기 - 24일차(뉴스 수집 시스템 고도화 & 비동기처리) (0) | 2025.06.23 |
| 인턴일기 - 23일차(인증정보 정비 완료 & 통합크롤러 수정) (0) | 2025.06.23 |
| 인턴일기- 22일차(ISO 인증명 데이터 정비와 데이터 통합작업) (1) | 2025.06.23 |