https://github.com/seonghobae/oai-pmh-scraper
Tooling to harvest open-access papers via OAI-PMH and store in Snowflake
https://github.com/seonghobae/oai-pmh-scraper
Last synced: 2 months ago
JSON representation
Tooling to harvest open-access papers via OAI-PMH and store in Snowflake
- Host: GitHub
- URL: https://github.com/seonghobae/oai-pmh-scraper
- Owner: seonghobae
- Created: 2026-03-24T14:13:28.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2026-03-31T11:11:46.000Z (2 months ago)
- Last Synced: 2026-04-04T10:52:21.835Z (2 months ago)
- Language: Python
- Size: 227 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Security: docs/security/api-security-checklist.md
- Agents: AGENTS.md
Awesome Lists containing this project
README
# OAI-PMH Paper Harvester
OAI-PMH에서 공개되는 메타데이터를 수집해 Snowflake에 적재하는 파이썬 수집기입니다.
## 특징
- OAI-PMH `ListRecords`를 사용한 증분 수집
- `resumptionToken` 기반 페이지네이션 처리
- 중복 식별자 중 최신 datestamp 기반 dedupe
- 오픈 액세스 판별 후 저장 필터링 (옵션)
- Snowflake `MERGE` 업서트
- 로컬 상태 파일 기반 재개 지원
## 빠른 실행
```bash
python -m venv .venv
source .venv/bin/activate
pip install -e .[dev]
export OAI_BASE_URL="https://export.arxiv.org/oai2"
export OAI_METADATA_PREFIX="oai_dc"
export SNOWFLAKE_ACCOUNT=""
export SNOWFLAKE_USER=""
export SNOWFLAKE_PASSWORD=""
export SNOWFLAKE_DATABASE="HARMONIA"
export SNOWFLAKE_SCHEMA="PUBLIC"
export SNOWFLAKE_TABLE="PAPERS"
oai-pmh-harvester
```
드라이런:
```bash
oai-pmh-harvester --dry-run
```
## 환경 변수
| 이름 | 설명 | 기본값 |
| --- | --- | --- |
| `OAI_BASE_URL` | OAI-PMH 엔드포인트 URL | `required` |
| `OAI_METADATA_PREFIX` | 메타데이터 포맷 | `oai_dc` |
| `OAI_SET` | set 매개변수 | 없음 |
| `OAI_FROM` | UTC datetime/date | 없음 |
| `OAI_UNTIL` | UTC datetime/date | 없음 |
| `OPEN_ACCESS_ONLY` | 오픈 액세스만 저장 (`true`/`false`) | `false` |
| `OPEN_ACCESS_TERMS` | 오픈 액세스 판별 키워드 (`,` 구분) | 기본 내장 |
| `HARVEST_BATCH_SIZE` | 업서트 배치 크기 (`0`이면 전체 일괄) | `500` |
| `OAI_REQUEST_TIMEOUT` | API 요청 타임아웃(초) | `30` |
| `OAI_USER_AGENT` | 요청 User-Agent 문자열 | `oai-pmh-scraper/0.1.0` |
| `OAI_STATE_FILE` | 상태 파일 경로 | `.oai_harvest_state.json` |
Snowflake 인증:
| 이름 | 설명 | 기본값 |
| --- | --- | --- |
| `SNOWFLAKE_ACCOUNT` | Snowflake 계정 | - |
| `SNOWFLAKE_USER` | 사용자 | - |
| `SNOWFLAKE_PASSWORD` | 비밀번호 | - |
| `SNOWFLAKE_ROLE` | 역할 | - |
| `SNOWFLAKE_WAREHOUSE` | 웨어하우스 | - |
| `SNOWFLAKE_DATABASE` | DB | `HARMONIA` |
| `SNOWFLAKE_SCHEMA` | SCHEMA | `PUBLIC` |
| `SNOWFLAKE_TABLE` | 테이블 | `PAPERS` |
## 라이선스
MIT