crawlstore
给 requests 等同步爬虫使用的轻量 MongoDB 落库组件。
安装
本地开发安装:
uv pip install -e .
或者从当前源码构建 wheel:
uv build
使用
from crawlstore import MongoSink
items = [
{"url": "https://example.com/1", "title": "商品 1", "price": 19.9},
{"url": "https://example.com/2", "title": "商品 2", "price": 29.9},
]
with MongoSink(
uri="mongodb://127.0.0.1:27017",
database="crawler",
) as sink:
sink.ensure_indexes("products", unique=[("url",)])
result = sink.save_many(
items,
collection="products",
key_fields=("url",),
mode="upsert",
)
print(result)
也可以使用环境变量:
$env:MONGO_URI = "mongodb://127.0.0.1:27017"
$env:MONGO_DATABASE = "crawler"
from crawlstore import MongoSink
sink = MongoSink.from_env()
sink.save(
{"shop_id": "1001", "name": "示例店铺"},
collection="shops",
key_fields=("shop_id",),
)
sink.close()
读取数据
读取单条数据:
product = sink.find_one(
collection="products",
query={"url": "https://example.com/1"},
)
按条件批量读取:
products = sink.find_many(
collection="products",
query={"price": {"$gte": 10}},
projection={"title": 1, "price": 1},
sort=[("price", -1)],
skip=0,
limit=100,
)
for product in products:
print(product)
统计数量:
total = sink.count(
collection="products",
query={"price": {"$gte": 10}},
)
upsert 会自动维护 _created_at 和 _updated_at,使用本地当前时间,
格式为 YYYY-MM-DD HH:MM,例如 2026-08-20 11:25。唯一键可以是组合字段:
sink.save_many(
items,
collection="products",
key_fields=("platform", "product_id"),
)
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
crawlstore-0.2.0.tar.gz
(3.9 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file crawlstore-0.2.0.tar.gz.
File metadata
- Download URL: crawlstore-0.2.0.tar.gz
- Upload date:
- Size: 3.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f40dcd04e8584416cc7e278dcf2da2c1928b3763ac04578eb78041c6f2166c9f
|
|
| MD5 |
11daf2115ac0d6bc147da1f83ca639bb
|
|
| BLAKE2b-256 |
8c0fb1fa8fd22817f3dada8dfd0a0ccf0b7b5d2d9d9a969a7c8ef1ecee798346
|
File details
Details for the file crawlstore-0.2.0-py3-none-any.whl.
File metadata
- Download URL: crawlstore-0.2.0-py3-none-any.whl
- Upload date:
- Size: 4.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7a432fd3b5e321e9955c51c254b91f72600c09463743bb5594048aca2987327d
|
|
| MD5 |
dea8699cd6a3781173c9f8236cffbcf4
|
|
| BLAKE2b-256 |
2e452a0fcc41c074fa939b3a67bc8a7f89b48512f7a0b7d2878f9c7b04d87a2e
|