Skip to main content

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)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

crawlstore-0.2.0-py3-none-any.whl (4.0 kB view details)

Uploaded Python 3

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

Hashes for crawlstore-0.2.0.tar.gz
Algorithm Hash digest
SHA256 f40dcd04e8584416cc7e278dcf2da2c1928b3763ac04578eb78041c6f2166c9f
MD5 11daf2115ac0d6bc147da1f83ca639bb
BLAKE2b-256 8c0fb1fa8fd22817f3dada8dfd0a0ccf0b7b5d2d9d9a969a7c8ef1ecee798346

See more details on using hashes here.

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

Hashes for crawlstore-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7a432fd3b5e321e9955c51c254b91f72600c09463743bb5594048aca2987327d
MD5 dea8699cd6a3781173c9f8236cffbcf4
BLAKE2b-256 2e452a0fcc41c074fa939b3a67bc8a7f89b48512f7a0b7d2878f9c7b04d87a2e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page