Rust 高速化とブラウザ なりすまし機能を備えた Python 非同期ウェブスクレイピングフレームワーク
中辛 の解説
Python 3.13+ で動作する非同期スクレイピングフレームワークです。wreq(ブラウザ なりすまし対応)と scraper-rs(高速 HTML パース)を基盤に、並行リクエスト制御、ミドルウェア、データパイプラインを提供します。JSON Lines・SQLite・XML・CSV など複数の出力形式に対応し、デモコードはすぐに実行できます。
こんなリポジトリです
こんなときに便利です
- e コマース サイトから商品情報を定期的に抽出して価格比較データベースを構築する場合
- JavaScript でレンダリングされるニュースサイトから記事を自動収集して全文検索インデックスに登録する場合
- 複数の API エンドポイントとプロキシを組み合わせて大規模なデータセット取得を並行実行する場合
主な機能
ほかとの違い
Rust 統合による Python GIL 回避と free-threaded Python 対応により、Scrapy などの従来フレームワークより高速で、プロキシ・robots.txt・Cloudflare・Tor v3 対応も組み込まれています。
このリポジトリの作り方
はじめてですか? むずかしくありません — 上から順にたどれば、自分の環境で動かして味見できます。
準備するもの
- Python 3.13 以上
- pip または uv パッケージマネージャ
すぐに始める
- パッケージをインストールします。
pip install silkworm-rs
- Spider クラスを定義して、parse メソッドでデータを抽出します。
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)
- 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,
)
ギット飯トライで味見
入れるのが面倒で少し不安だったなら — 安全スキャンからインストールまで、ターミナル一行で終わります。
ターミナルに貼り付ければ、ギット飯の安全スキャン → 隔離フォルダへ clone → インストール → 実行方法の案内まで自動です。はじめてでも大丈夫 — この一行だけです。
npx gitbap-try BitingSnakes/silkworm
Node.js さえあれば、インストールなしで動きます · ギット飯トライとは? →
スター推移 · 7日
確認日時
使いやすさ · まねしやすいか
- ゆるいライセンス
- テストあり
- サンプル集
- 最近の更新
- AGENTS.md
- llms.txt
- テンプレート
最近の更新あり · 2025 年に作成
「データ・クローリング」 こういうリポジトリを毎週受け取りませんか?
毎週月曜の朝、選んだ一膳だけ。広告なし · いつでも解除。
自分のリポジトリですか? README にギット飯バッジを貼る
[](https://www.gitbap.com/r/BitingSnakes/silkworm)Claude からそのまま使う — ギット飯のつなぎ方
ギット飯を Claude につなぐと、こうしたリポジトリを Claude・Cursor・Codex から直接さがして試せます。
Claude の設定 → コネクタにこのアドレスを貼り付け。
https://www.gitbap.com/api/mcpプラグインを入れると /gitbap-trending·/gitbap-try のスラッシュコマンドで、その場でリポジトリを試せます。Claude Code で下の 2 行を順に実行してください。
/plugin marketplace add jakeparkcolde/gitbap-cowork/plugin install gitbap-cowork@gitbapAI が README をもとに要約しました · 原文を見る