{"repo":"TiebaMeow/TiebaScraper","free":true,"listed":false,"github":"https://github.com/TiebaMeow/TiebaScraper","clone":"git clone https://github.com/TiebaMeow/TiebaScraper.git","description":"基于 aiotieba 的高性能百度贴吧异步爬虫工具","language":"Python","stars":31,"topics":["aiotieba","crawler","scraper","tieba"],"license":"MIT","category":"scrapers-browser-automation","readme_excerpt":"TiebaScraper 基于 aiotieba 的高性能百度贴吧异步爬虫工具，支持实时监控和历史数据回溯。 功能特性 - 三种运行模式可选 ： - 实时监控模式 : 持续监控指定贴吧首页的最新内容 - 历史数据回溯模式 : 抓取指定贴吧的历史数据 - 混合模式 : 同时运行实时监控和历史数据回溯 - 高性能、高可靠 ： - 基于 asyncio/uvloop 的全异步架构 - 同时支持速率限制和并发控制 - 内置重试与防 429 雪崩保护机制 - 支持 PostgreSQL 数据库分区存储 - 支持使用 Redis 进行缓存优化 - 可扩展性 ： - 合理的表结构设计，支持高效存储与查询大量数据 - 通过 WebSocket/Redis 支持高度可自定义的实时内容审查 - 实时监控模式支持动态添加或删除监控的贴吧 - 支持通过 Prometheus 监控爬虫相关指标 - 与 TiebaMeow 工具集无缝集成 环境要求 - uv - PostgreSQL 14+ - （可选）TimescaleDB - （可选）Redis 6.0+ 安装依赖 uv 会自动下载合适的 Python 版本并安装所有依赖。对于 Linux 系统，将自动同时安装并在运行时尝试使用 uvloop 。 参数配置 1. 复制配置文件模板 2. 编辑 config.toml 文件，根据注释填写相应的配置项 3. （可选）使用分组配置，可以为不同的分组设置不同的调度周期 4. 为 TiebaScraper 创建一个单独的数据库（名称可以自定义）： 5. 推荐单独为 TiebaScraper 创建一个用户： 数据库分区配置（可选） 如果你的数据量不大（单表量级在百万行以下），可以不启用分区。请注意，我们将爬取到的所有数据存到了 thread 、 post 、 comment 三张表中。 如果你希望对数据进行分区存储，以避免单表数据量过大，可以使用 TimescaleDB 扩展来管理 PostgreSQL 数据库中的分区表。 首先，请确保配置文件中的 partition enabled 选项设置为 true ： 并根据你的数据量合理设置 p interval 的值（如 \"3 months\"），以确保单个分区不会太大。 然后请确保 PostgreSQL 数据库已安装 TimescaleDB 扩展。可以参考官方文档进行安装，推荐直接使用官方 Docker 镜像 timescale/timescaledb:latest-pg17 。 使用方法 三种运行模式 你可以在以下三种模式中选择适合你场景的模式运行： 实时监控模式 实时监控模式下，程序将定期扫描指定贴吧的首页，并根据配置将获取到的新内容推送到消费者队列中。 历史数据回溯模式 历史数据回溯模式下，程序将根据用户定义的深度抓取指定贴吧的历史数据。 混合模式 混合模式下，程序将同时运行实时监控和历史数据回溯。混合模式的历史数据回溯任务将从第2页开始抓取。 内容审查 当程序运行在实时监控模式或混合模式时，你可以在 config.toml 中配置通过 WebSocket/Redis 将内容推送到审查服务进行处理。你可以在 examples 目录下找到消费者示例和反序列化示例。 开启推送后，程序会推送完整序列化后的对象，你可以直接获得完整数据，并可通过 tiebameow 提供的反序列化函数反序列化得到完整的 tiebameow DTO 对象。DTO 对象的定义请参考 tiebameow/models/dto.py。 TiebaMeow 提供了一","default_branch":null,"files":null,"tree":[],"storefront":"/r/TiebaMeow","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/TiebaMeow/TiebaScraper/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}