Reddit Scraping
KO

누락을 숨기지 않고 입력 구성 요소를 교체하세요

webscraping으로 입력 요구와 응답 수신을 점검하고 누락을 보존하는 이전 연습입니다. 저장한 응답에서 정규화를 반복해 교체 범위를 판단하세요.

API 키 받기

코드를 바꾸기 전에 소스 요구를 작성하세요

이 연습은 기존 수집기에서 하나의 구성 요소를 바꾸는 작업입니다. 출력을 사용하는 쪽의 요구를 적으세요. 어떤 정보가 필수인지, 과거 내용을 받아들일 수 있는지, 쓸 만한 게시물이 도착하지 않으면 어떻게 동작해야 하는지 정합니다. 이는 코드의 입력 승인 기준이며 API 키를 받으면 생기는 기능이 아닙니다. 단일 HTTP 성공보다 구체적인 기준으로 이전 결과를 검토할 수 있습니다.

Reddit Scraping은 독립적인 과거 Reddit 아카이브이며 실시간 크롤링이나 접근 제한 우회 서비스를 제공하지 않습니다. Reddit과 제휴한 서비스도 아닙니다. 새 게시물을 즉시 추적해야 한다면 과거 기록을 조회할 수 있다는 점과 별개로 판단해야 합니다. 필요한 커뮤니티와 기간을 정한 뒤 작은 요청으로 이용 가능한 기록을 확인하세요. 누락이 목적에 미치는 영향을 고려하지 않은 채 소스 교체가 충분하다고 결론 내리지 마세요.

한 페이지를 받고 결과 종류를 구분하세요

홈의 https://api.redditscraping.com/v1/posts?subreddit=webscraping&limit=3 예제로 시작하세요. subreddit은 커뮤니티를 선택하고 limit은 한 응답의 최대 기록 수를 정합니다. 서버에서 Authorization: Bearer YOUR_API_KEY 또는 X-API-Key: YOUR_API_KEY를 보내고 응답 상태와 필드를 확인합니다. 작은 표본이 처리 가능하더라도 전체 이력이나 같은 결과의 재현을 보장하지는 않습니다. 현재 받은 기록만을 근거로 변환 규칙을 점검하고 필요한 추가 검토 항목을 남기세요.

요청 실패, 기록 없는 성공 응답, 검증을 기다리는 기록을 별개의 결과로 처리하세요. 다음 단계를 계속 실행하려고 가상의 빈 게시물을 만들지 않습니다. 필수 값이 없으면 원래 응답과 거부 이유를 보존하세요. 애플리케이션이 기록을 받아들이지 않는 것과 API 오류는 서로 다른 사건입니다. 실행 결과를 진단할 때도 이 차이가 보여야 하며 두 사건을 하나의 실패 횟수로만 합치지 않는 편이 좋습니다.

기록을 받아들인 뒤 정규화하세요

기존 파서가 내보내던 필드를 목록으로 만들고 필수 여부, 빈 값 처리, 대응 필드가 없을 때의 동작을 정하세요. 새 응답에 같은 정보가 있다고 가정하지 말고 실제 값을 확인해야 합니다. JSON 형식도 입력 검증과 누락 처리에서 자유롭지 않습니다. 매핑 판단을 기록해 두면 나중에 결과를 해석하는 사람이 변환 과정을 이해할 수 있습니다. 모든 기록에 같은 필드가 있을 것이라고 전제하지 마세요.

텍스트를 사용하는 구성 요소라면 받은 원문과 로컬에서 정규화한 버전을 함께 보존하세요. 해당 구성 요소의 공백 규칙처럼 필요한 변환만 적용하고 규칙 버전을 기록합니다. 누락된 텍스트를 빈 관측값으로 바꾸지 마세요. 비교에 쓸 수 있는 식별자를 유지하고 중복을 제거한다면 로컬 판단의 근거를 남깁니다. 이는 아카이브 자체에 중복이 없다는 보장이 아니며 원문까지 조용히 덮어쓸 이유도 아닙니다.

수집 실행에 경계를 정하세요

요청 한 번은 최대 100개 기록, 쿼리 하나는 최대 100페이지이며 페이지별로 따로 요청해야 합니다. eq는 정확한 전체 건수, gte는 하한, unknown이나 null은 신뢰할 수 있는 전체 건수가 없음을 뜻합니다. 기간 분할은 작업 관리에 쓸 수 있지만 전체 수집이나 중복 없는 결과를 보장하지 않습니다. 사용한 조건과 저장된 페이지를 기록해 실제 받은 범위를 나중에도 설명할 수 있게 하세요.

저장한 응답으로 변환을 다시 실행하세요

변환기를 수정했다면 이미 저장한 응답을 입력으로 사용해 확인하세요. 그러면 코드 변경과 새로운 원격 요청의 다른 결과를 구분할 수 있습니다. 받아들인 기록, 거부한 기록과 빈 결과를 요구 사항에 맞춰 비교합니다. 파일 이름, 보관 기간과 접근 권한은 직접 정해야 합니다. 로컬 파일 저장은 서버에 고정 스냅샷을 만들지 않으며 같은 기록을 나중에도 원격에서 가져올 수 있다는 보장이 아닙니다.

기존 수집기의 어느 부분을 없앨지 결정하세요

무엇을 없앨 수 있을까요? 새 입력 구성 요소가 받아들이는 과거 내용을 얻는 데만 쓰던 HTML 다운로드와 선택자입니다. 무엇이 남을까요? 실행 일정, 필드 검증, 정규화, 저장과 누락의 설명입니다. 기존 수집기가 현재 페이지의 관찰도 맡았다면 그 요구는 아직 해결되지 않았습니다. 아카이브를 완전한 대체물로 선언하지 말고 다음 정기 작업을 켜기 전에 실제 교체 범위와 남겨 둔 역할을 기록하세요.

성공한 조회는 빈 결과여도 한 크레딧입니다. 잘못된 요청은 차감하지 않고 상위 소스 오류에서는 예약분을 돌려줍니다. 그러나 클라이언트에서 응답이 사라져도 서버가 성공했다면 비용이 발생할 수 있습니다. 이후 성공한 재시도는 별도 크레딧입니다. HTTP 400에서는 조건, 401에서는 키, 402에서는 잔액, 429에서는 전송 속도를 확인하세요. 모두 같은 즉시 재송신으로 처리하지 말고 원인을 구분한 다음 대응해야 합니다.