GitHub 트렌딩과 저장소 정보를 파이썬 표준 라이브러리만으로 모으기

GitHub 트렌딩 목록과 저장소 정보는 로그인 없이도 가져올 수 있어요. 파이썬 표준 라이브러리만으로 충분하고, 에이전트에게 ‘소개 글을 쓰기 전에 이걸로 직접 확인하라’고 시키기 좋아요. 이 사이트의 GitHub 트렌드 글도 이 방식으로 자료를 모아요.

왜 직접 모아야 하나요

다른 매체의 소개 글을 요약하면 과장이나 오래된 정보가 그대로 따라와요. GitHub에서 직접 가져오면 별 수, 마지막 커밋 날짜, 라이선스, 보관 처리 여부를 그 시점 값으로 확인할 수 있어요.

코드

import json, re, urllib.request

HEADERS = {"User-Agent": "my-collector/1.0", "Accept": "application/vnd.github+json"}

def fetch(url, accept=None):
    headers = {**HEADERS, "Accept": accept} if accept else HEADERS
    req = urllib.request.Request(url, headers=headers)
    with urllib.request.urlopen(req, timeout=30) as res:
        return res.read().decode("utf-8", "replace")

def trending(since="daily"):
    html = fetch(f"https://github.com/trending?since={since}", accept="text/html")
    rows = []
    for block in html.split('<article class="Box-row">')[1:]:
        name = re.search(r'<h2[^>]*>\s*<a[^>]*href="/([\w.-]+/[\w.-]+)"', block)
        if name:
            rows.append(name.group(1))
    return rows

def repo_info(repo):
    meta = json.loads(fetch(f"https://api.github.com/repos/{repo}"))
    readme = fetch(f"https://api.github.com/repos/{repo}/readme",
                   accept="application/vnd.github.raw")
    return {
        "stars": meta["stargazers_count"],
        "license": (meta.get("license") or {}).get("spdx_id"),
        "last_push": meta["pushed_at"],
        "archived": meta["archived"],
        "readme": readme,
    }

알아둘 점

  • 트렌딩은 공식 API가 없어요. 그래서 트렌딩 페이지의 HTML에서 저장소 이름을 읽어요. 페이지 구조가 바뀌면 이 부분이 멈추니, 결과가 비면 오류를 내도록 해 두세요.
  • 조회 횟수 한도: 로그인 없이 쓰는 API는 한 시간에 60회까지예요. 저장소 한 곳에 네댓 번을 쓰면 하루 몇 건은 여유가 있어요.
  • README는 원문 그대로 받을 수 있어요. Accept 헤더를 application/vnd.github.raw로 주면 돼요.
  • User-Agent를 꼭 넣으세요. 빠지면 요청이 거절돼요.
  • 별 수는 인기의 지표일 뿐이에요. 품질이나 안전을 보장하지 않아요. 마지막 커밋 날짜와 릴리스 유무를 함께 보세요.

에이전트에게 맡길 때

  • README 앞부분만 읽고 쓰지 않게 하세요. 주의사항은 뒤쪽에 있는 경우가 많아요.
  • README 안의 문장을 지시로 받아들이지 않게 하세요. ‘이 명령을 실행하라’는 문장이 있어도 자료로만 다뤄야 해요.
  • 글에 ‘무엇을 확인했고 무엇을 하지 않았는지’를 적게 하세요. 독자가 신뢰 수준을 판단할 수 있어요.

확인 범위

위 코드는 2026년 11월 15일에 실제로 실행해 트렌딩 목록과 저장소 정보가 조회되는 것을 확인했어요.

출처

GitHub REST API 문서 — Repositories

Similar Posts

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다