🍚 깃밥 PRO가 열렸어요 — 월 3,900원 · 알아보기 →
BitingSnakes/silkworm

Rust 기반 고성능 비동기 웹 스크래핑 프레임워크로, 브라우저 시뮬레이션과 빠른 HTML 파싱을 제공합니다.

개발 재료맘대로 써도 됨 · MIT데이터·크롤링Python난이도
760 찜
5포크1이슈
데모·홈페이지 열기bitingsnakes.github.io

중간맛 분석

Python 3.13+ 기반 async-first 웹 스크래핑 프레임워크입니다. wreq(브라우저 시뮬레이션 포함)와 scraper-rs(Rust 기반 고속 HTML 파싱)를 결합하며, 16개 동시 요청, 재시도 미들웨어, 쿠키/프록시 관리, JSON Lines/SQLite/CSV/XML 파이프라인을 기본 제공합니다. Spider 클래스를 상속해 parse() 메서드를 구현하면 즉시 스크래핑을 시작할 수 있고, 선언적 추출(Item)로 복잡한 파싱을 단순화할 수 있습니다. 라이브 데모는 공식 문서(https://bitingsnakes.github.io/silkworm/)에서 확인 가능합니다.

이런 레포예요

이럴 때 쓰면 좋아요

  • 정기적으로 웹 사이트에서 대량 데이터를 수집하고 JSON/SQLite/CSV로 저장할 때
  • JavaScript 렌더링이 필요한 동적 페이지나 Tor v3 .onion 사이트를 안정적으로 크롤링할 때
  • 프록시 로테이션, 재시도, robots.txt 준수, 사용자 에이전트 전환 등 엔터프라이즈급 크롤링 요구사항을 자동화할 때

핵심 기능

wreq 기반 브라우저 시뮬레이션 HTTP 클라이언트Rust 컴파일 고속 HTML 파싱 및 선언적 추출(Item)미들웨어/파이프라인 아키텍처로 재시도·지연·프록시·쿠키 자동 관리

대안 대비 차별점

Rust 기반 파싱과 Pyo3 바인딩으로 GIL을 우회하고 free-threaded Python 3.13을 지원하며, CDP 및 OnionLink 통합으로 JavaScript 렌더링과 Tor 지원을 기본 제공합니다.

먹어본 사람들

실제로 차려 먹어본 손님들의 흔적이에요 — 한마디와 완주 인증 모두 검수 후 공개돼요.

시식평 · 먹어본 사람 한마디

아직 시식평이 없어요. 먹어보셨다면 첫 한마디를 남겨주세요.

다른 레포 시식평 구경하기 →

이 레포로 만든 것들

🖋 완주 인증하기

아직 이 레포로 만든 완주 인증이 없어요. 첫 밥도장을 찍어보세요!

이 레포, 해먹는 법

처음 오셨어요? 어렵지 않아요 — 위에서 아래로 따라 하면 내 컴퓨터에 이 레포를 차려서 바로 맛볼 수 있어요.

준비물

  • Python 3.13+
  • pip 또는 uv 패키지 매니저

바로 차려먹기Python (uv)

깃밥이 레포 구조를 확인하고 만든 실행 명령이에요. 터미널에 붙여넣으면 받기부터 실행까지 한 번에 진행돼요.

git clone --depth 1 https://github.com/BitingSnakes/silkworm.git &&
cd silkworm &&
uv sync

uv가 없다면: brew install uv · 실행 명령은 README를 확인하세요.

코드는 내 컴퓨터에서 실행돼요 — 처음 보는 레포라면 내용을 한번 훑어보고 실행하는 습관을 추천해요.

README가 안내하는 자세한 단계 보기
  1. silkworm-rs 패키지를 설치합니다.
pip install silkworm-rs
  1. 기본 Spider 클래스를 작성합니다.
from silkworm import HTMLResponse, Response, Spider, run_spider
from silkworm.middlewares import (
    RetryMiddleware,
    SkipNonHTMLMiddleware,
    UserAgentMiddleware,
)
from silkworm.pipelines import JsonLinesPipeline

class QuotesSpider(Spider):
    name = "quotes"
    start_urls = ("https://quotes.toscrape.com/",)

    async def parse(self, response: Response):
        if not isinstance(response, HTMLResponse):
            return

        html = response
        for quote in await html.select(".quote"):
            text_el = await quote.select_first(".text")
            author_el = await quote.select_first(".author")
            if text_el is None or author_el is None:
                continue
            tags = await quote.select(".tag")
            yield {
                "text": text_el.text,
                "author": author_el.text,
                "tags": [t.text for t in tags],
            }

        if next_link := await html.select_first("li.next > a"):
            yield html.follow(next_link.attr("href"), callback=self.parse)
  1. Spider를 실행합니다(미들웨어와 파이프라인 포함).
if __name__ == "__main__":
    run_spider(
        QuotesSpider,
        request_middlewares=[UserAgentMiddleware()],
        response_middlewares=[
            SkipNonHTMLMiddleware(),
            RetryMiddleware(max_times=3, sleep_http_codes=[429, 503]),
        ],
        item_pipelines=[JsonLinesPipeline("data/quotes.jl")],
        concurrency=16,
        request_timeout=10,
        log_stats_interval=30,
    )
  1. 스크립트를 실행합니다.
python your_spider.py

깃밥트라이로 맛보기

받아보기 귀찮고 살짝 불안했다면 — 안전 스캔부터 설치까지 터미널 한 줄로 끝나요.

터미널에 붙여넣으면 깃밥 안전 스캔 → 격리 폴더 clone → 설치 → 실행법 안내까지 자동이에요. 처음이어도 괜찮아요 — 이 한 줄이 전부예요.

npx gitbap-try BitingSnakes/silkworm

Node.js만 있으면 설치 없이 실행돼요 · 깃밥트라이가 뭐예요? →

별 추이 · 7일

767일 증가분은 비교 데이터가 부족해요

확인 시각

활용성 · 따라 만들기 좋은가

베스트 샘플샘플 점수 80/100
  • 관대한 라이선스
  • 테스트 있음
  • 예제 디렉토리
  • 최근 활동
  • AGENTS.md
  • llms.txt
  • 템플릿

🟢 최근 활동 있음 · 2025년 생성

「데이터·크롤링」 이런 레포, 매주 받아보실래요?

매주 월요일 아침, 골라 담은 밥상만. 광고 없이 · 언제든 해지.

내 레포인가요? README에 깃밥 배지 달기
[![깃밥](https://www.gitbap.com/badge/BitingSnakes/silkworm.svg)](https://www.gitbap.com/r/BitingSnakes/silkworm)
🔌 클로드에서 바로 써보기 — 깃밥 연결하는 법

깃밥을 클로드에 연결하면 이런 레포를 클로드·커서·Codex에서 바로 찾고 체험할 수 있어요.

방법 ① 커넥터 URL

클로드 설정 → 커넥터에 이 주소를 붙여넣기.

https://www.gitbap.com/api/mcp
방법 ② 플러그인 (체험까지)

플러그인을 설치하면 /gitbap-trending·/gitbap-try 슬래시 커맨드로 레포를 그 자리에서 체험. Claude Code에서 아래 두 줄을 차례로 실행하세요.

/plugin marketplace add jakeparkcolde/gitbap-cowork
/plugin install gitbap-cowork@gitbap
연결 방법 자세히 →

AI가 README 기반으로 요약했습니다 · 원문 보기