많은 중요한 조사는 공공 기록에서 시작된다. 쉰 개의 페이퍼컴퍼니 뒤에 같은 이사가 있다는 사실을 보여주는 기업 등기부, 계약이 특정 기준치 아래로 유지되도록 분할되었음을 드러내는 조달 공고, 공개 성명과 모순되는 법원 서류 같은 것들이다. 그 정보는 처음부터 공개되어 있었다. 실제 작업은 그것을 체계적으로 수집하고, 온전하게 보존하고, 누군가 그것에 의존하기 전에 검증하는 데 있었다.
이를 대규모로 수행하는 것은 데이터 수집 문제이며, 기업을 위한 수집을 신뢰할 수 있게 만드는 습관들은 그 결과가 기명 기사로 발행될 때 더욱 중요해진다. 이 가이드는 보도와 연구를 위한 공공 기록 수집 방법을 제시한다. 어디서 시작할지, 어떻게 수집할지, 증거를 어떻게 보존할지, 어떻게 검증할지, 그리고 이와 함께 따라오는 윤리적 질문들을 다룬다.
핵심 요약
- 공식 벌크 데이터와 API부터 시작하라. 많은 등기소가 무료 다운로드나 API를 제공하며, 이는 웹사이트를 스크래핑하는 것보다 더 완전하고 더 방어하기 쉽다.
- 서면 계획을 세우고 수집하라. 무엇이 필요한지, 어디에서, 얼마나 자주, 그리고 무엇을 수집하지 않을지를 정해야 한다.
- 모든 기록을 제공된 그대로 해시, 타임스탬프, 출처 주소와 함께 보존하여 나중에 출처가 무엇을 말했는지 입증할 수 있도록 하라.
- 발행하기 전에 검증하라. 기록을 두 번째 출처나 발행 기관과 대조해 확인하고, 단일 기록은 결론이 아니라 단서로 취급하라.
- 공개되었다고 해서 무해한 것은 아니다. 공공 기록 속 개인 정보는 여전히 최소화, 주의, 그리고 명확한 공익적 이유를 필요로 한다.
재사용을 위해 공개된 자료부터 시작하라
스크레이퍼를 작성하기 전에 출처가 이미 재사용을 위해 데이터를 공개하고 있는지 확인하라. 흔히 그런 경우가 있으며, 공식 데이터는 스크래핑한 사본보다 방어하기 쉽다.
| 출처 | 제공되는 것 | 참고 사항 |
|---|---|---|
| UK Companies House | 무료 공개 데이터 API와 무료 벌크 다운로드. 월간 회사 스냅샷, 회계 데이터, 실질적 지배력을 가진 사람(people with significant control) 파일 포함 | UK 기업의 임원, 제출 서류, 소유권 정보 |
| EU 조달, TED | 공식 관보 부록에 실리는 공고, 연간 약 800,000건, 오픈 데이터와 API로 제공 | EU 전역의 입찰 및 계약 체결 정보 |
| US 연방 법원, PACER | 페이지당 $0.10, 문서당 최대 $3의 전자 법원 기록. 분기당 $30 이하 사용자는 수수료 면제 | 소송 기록부와 제출 서류. 규모가 커지면 비용이 누적됨 |
벌크 데이터에는 또 다른 장점이 있다. 특정 시점의 등기부 전체를 포착할 수 있어, 한 주소에 몰려 있는 기업 군집 같은 패턴을 페이지별 열람으로는 결코 찾을 수 없는 방식으로 발견하게 해준다. 웹사이트만 존재하는 경우에는 아래와 같이 신중하게 수집하라.
계획을 세워 수집하라
수집을 시작하기 전 짧은 서면 계획을 세우면 작업이 집중되고 방어 가능해진다.
- 질문. 무엇을 밝히려 하는지, 그리고 어떤 기록이 이를 확인하거나 반증할 수 있는지.
- 출처. 어떤 등기소, 포털, 아카이브를 사용할지, 그리고 각각이 왜 해당 분야의 권위 있는 출처인지.
- 필드. 무엇을 수집할지, 그리고 의도적으로 제외할 것은 무엇인지, 특히 필요하지 않은 개인 정보.
- 주기. 단일 스냅샷인지, 변경 사항과 삭제를 포착하기 위한 반복 수집인지.
- 방법. 공식 API, 벌크 다운로드, 또는 공공 서비스에 실질적인 부하를 주지 않는 속도로 이루어지는 신중한 웹페이지 수집.
반복 수집은 흔히 기사거리가 발견되는 지점이다. 조용히 변경되는 기록, 수정되는 제출 서류, 사라지는 항목은 모두 전후로 수집했을 때에만 보인다. 대규모 변경 감지와 공급업체의 공개 흔적 모니터링에 사용되는 동일한 기법이 그대로 적용된다.
기록을 제공된 그대로 보존하라
출처가 나중에 자신이 공개한 내용을 부인할 때 스크린샷만으로는 증거가 되지 않는다. 서버가 반환한 응답을 그대로 보존하고, 그것이 어디서 언제 왔는지 보여줄 맥락도 함께 유지하라. 아래 함수는 응답 본문을 변경 없이 SHA-256 해시로 이름 붙여 저장하고, URL, 상태, 시간, 해시를 담은 로그 라인을 추가한다.
import hashlib
import json
from datetime import datetime, timezone
from pathlib import Path
import requests
def capture(url, folder, session=None, note=""):
"""Save a public record exactly as served, with a hash and the context needed to verify it later."""
session = session or requests.Session()
response = session.get(url, timeout=30)
body = response.content
digest = hashlib.sha256(body).hexdigest()
retrieved = datetime.now(timezone.utc).isoformat(timespec="seconds")
folder = Path(folder)
folder.mkdir(parents=True, exist_ok=True)
(folder / f"{digest}.body").write_bytes(body)
record = {
"requested_url": url,
"final_url": response.url,
"status": response.status_code,
"retrieved_utc": retrieved,
"sha256": digest,
"bytes": len(body),
"content_type": response.headers.get("content-type", ""),
"last_modified": response.headers.get("last-modified"),
"note": note,
}
with open(folder / "log.jsonl", "a", encoding="utf-8") as log:
log.write(json.dumps(record) + "\n")
return record
UK 등기소의 공개 회사 페이지에 사용하면 다음과 같다.
import requests
from capture import capture
session = requests.Session()
session.headers["User-Agent"] = "ExampleNewsroom/1.0 (+https://example.org/research)"
record = capture("https://find-and-update.company-information.service.gov.uk/company/00445790",
"records", session, note="registered office check")
print(record["status"], record["sha256"], record["retrieved_utc"])
같은 페이지를 10초 간격으로 두 번 캡처했을 때 동일한 해시가 나왔는데, 이것이 바로 핵심이다. 기록이 변경되지 않았다면 누구나 바이트 단위로 확인할 수 있고, 변경되었다면 해시가 정확히 언제 변경되었는지 보여준다. 더 큰 규모의 수집에는 원본 응답 보존에서 설명한 WARC 형식이 요청과 응답을 표준 도구와 함께 저장하며, 온라인 목록에서 나온 법정 증거는 자료가 법적 절차에 사용될 수 있을 때 필요한 추가 단계를 다룬다. 같은 시점에 공개 웹 아카이브에 캡처를 남기면 독립적인 입증 자료가 추가된다.
수집이 어디서 이루어졌는지도 기록하라. 일부 포털은 방문자의 위치에 따라 다른 콘텐츠나 언어를 보여주며, 관측 지점 표준에 대한 주장에서 논의된 것처럼 관측 지점을 기록해두면 다른 사람이 당신이 본 것을 재현할 수 있다.
발행하기 전에 검증하라
공공 기록은 흔히 틀리거나, 오래되었거나, 모호하다. 등기부는 제출된 내용을 기록할 뿐 사실을 기록하지 않으며, 이름은 재사용되고, 주소는 같은 설립 대행사를 통해 등록된 많은 기업들이 공유한다. 검증은 기록을 결론으로 바꾸는 과정이다.
| 확인 사항 | 방지하는 오류 |
|---|---|
| 발행 기관이나 두 번째 공식 출처로 확인 | 전사 오류와 오래된 항목 |
| 이름이 아니라 식별자로 대조 | 이름이 같은 다른 사람이나 기업 |
| 날짜와 버전 확인 | 수정된 제출 서류, 대체된 기록, 시간대 혼동 |
| 무고한 설명 가능성 찾기 | 설립 대행사 주소, 명의 이사, 통상적인 제출 |
| 발행 전 당사자에게 질의 | 기록이 보여주지 않는 맥락과 공정성 |
| 주장에서 기록까지의 연결고리 유지 | 발행된 모든 진술이 보존되고 해시된 기록으로 추적 가능함 |
마지막 항목이 가장 중요한 원칙이다. 기사 속 모든 사실 주장은 보존된 특정 기록을 가리켜야 하며, 팀 내 누구든 그것을 열어 수집된 날 그것이 무엇을 말했는지 확인할 수 있어야 한다.
윤리
공공 기록 수집은 다른 어떤 보도와도 같은 윤리적 질문을 제기한다. Society of Professional Journalists의 윤리 강령은 이를 네 가지 원칙으로 정리한다. 진실을 추구하고 보도하라, 해를 최소화하라, 독립적으로 행동하라, 책임지고 투명하게 행동하라. 몇 가지는 대규모 수집에 특히 강하게 적용된다.
- 공개된 것이 무해한 것과 같지는 않다. 등기부에는 자택 주소, 생년월일, 가족 정보가 담겨 있다. 기사에 필요한 것만 수집하고, 나머지에 대한 접근을 제한하며, 취재 대상이 아닌 사람들의 개인 정보를 공개하기 전에 신중히 생각하라.
- 집계는 새로운 정보를 만들어낸다. 기록들을 결합하면 단일 기록으로는 드러나지 않는 것이 드러날 수 있는데, 이것이 조사의 목적인 동시에 위험이기도 하다. 그 결합이 보여주는 내용의 공익성을 저울질하라.
- 존중하는 방식으로 수집하라. 공공 서비스는 대중의 비용으로 운영된다. 가능하면 벌크 데이터를 활용하고, 수집 속도를 조절하고, 수집자를 정직하게 밝히고, 접근 통제를 우회하지 말라.
- 활동 지역의 법을 유의하라. 데이터 보호, 저작권, 컴퓨터 오용 관련 규정은 언론인에게도 적용되며, 많은 관할권이 각기 다른 조건을 가진 언론 또는 연구 목적 예외를 두고 있다. 웹 스크래핑이 합법인지와 GDPR과 데이터 수집에 대한 개요가 출발점이 될 수 있다. 구체적인 프로젝트는 소속 매체의 법률 자문과 상의하라.
결론
공공 기록은 조사가 가질 수 있는 가장 강력한 출처 중 하나이면서, 동시에 가장 오용하기 쉬운 출처 중 하나다. 공식 벌크 데이터와 API부터 시작하고, 서면 계획에 따라 수집하고, 모든 기록을 제공된 그대로 해시와 타임스탬프와 함께 보존하고, 각 결론을 두 번째 출처 및 취재 대상과 대조해 검증하고, 개인 정보는 기사에 필요한 만큼만 다루어라.
그 결과는 흔들리지 않는 보도다. 모든 주장이 누구나 확인할 수 있는 기록으로 추적 가능하고, 보도국이 설명할 수 있는 방식으로 수집된 보도다.
출처 및 참고 자료
- Companies House, Companies House data products.
- European Commission, Tenders Electronic Daily.
- PACER, Pricing: how fees work.
- Society of Professional Journalists, Code of Ethics.
- Capture code tested by Shifter on 5 October 2026 against a public Companies House page.