Twitter Fetcher
抓取 Twitter 推文数据,支持用户模式和关键词搜索模式。数据自动保存到数据库。
智能参数解析指南
当用户提出抓取需求时,你需要根据用户的自然语言描述,智能解析以下参数:
1. 采集数量智能判断
根据用户需求自动设置采集数量:
| 用户意图 | 推荐数量 | 示例 |
|---|---|---|
| 快速浏览/测试 | 100-300 | "帮我看看最近的推文"、"简单查一下" |
| 日常采集 | 500-800 | "抓取推文"、"获取数据" |
| 深度分析 | 1000-1500 | "全面分析"、"深入了解"、"数据分析" |
| 大规模采集 | 1500-3000 | "尽可能多"、"全部推文"、"大量数据" |
如果用户未指定数量,默认使用 200 条。
2. 排序维度解析
| 用户表述 | 参数值 | 说明 |
|---|---|---|
| "最新"、"最近"、"新发布" | --type Latest |
按时间倒序(默认) |
| "热门"、"火爆"、"高互动"、"爆款" | --type Top |
按互动量排序 |
3. 高级查询条件
脚本支持 Twitter 搜索操作符,可组合使用:
| 操作符 | 说明 | 示例 |
|---|---|---|
--since |
开始日期 | --since 2024-01-01 |
--until |
结束日期 | --until 2024-12-31 |
--lang |
语言过滤 | --lang zh(中文)、--lang en(英文) |
--min-faves |
最少点赞数 | --min-faves 100 |
--min-retweets |
最少转推数 | --min-retweets 50 |
--filter |
内容过滤 | images(含图片)、videos(含视频)、links(含链接) |
--exclude |
排除内容 | replies(排除回复)、retweets(排除转推) |
--verified |
仅认证用户 | 添加此参数仅获取蓝V用户推文 |
4. 条件解析示例
示例 1: "帮我查询最近一周关于 AI 的热门推文"
python3 scripts/fetch_tweets.py -k "AI" --type Top --since 2024-01-12 --max-tweets 800
示例 2: "抓取 @elonmusk 最近的推文"
python3 scripts/fetch_tweets.py -u elonmusk --max-tweets 800
示例 3: "搜索 ChatGPT 相关的高质量推文,点赞超过 1000"
python3 scripts/fetch_tweets.py -k "ChatGPT" --min-faves 1000 --type Top --max-tweets 500
示例 4: "获取某用户的原创推文,不要转推和回复"
python3 scripts/fetch_tweets.py -u username --exclude replies --exclude retweets --max-tweets 1000
示例 5: "大规模采集 AI Agent 领域的推文做研究"
python3 scripts/fetch_tweets.py -k "AI Agent" --type Latest --max-tweets 3000
使用方法
抓取用户推文
# 抓取用户最近推文(自动保存到数据库)
python3 scripts/fetch_tweets.py -u <username>
# 指定数量
python3 scripts/fetch_tweets.py -u <username> --max-tweets 500
# 带时间范围
python3 scripts/fetch_tweets.py -u <username> --since 2024-01-01 --until 2024-06-30
搜索关键词
# 搜索关键词
python3 scripts/fetch_tweets.py -k "AI agent" --max-tweets 500
# 搜索热门推文
python3 scripts/fetch_tweets.py -k "ChatGPT" --type Top
# 带过滤条件
python3 scripts/fetch_tweets.py -k "AI" --min-faves 100 --lang en --type Top
完整参数说明
| 参数 | 说明 | 默认值 |
|---|---|---|
-u, --user |
Twitter 用户名(不含 @) | - |
-k, --keyword |
搜索关键词 | - |
--max-tweets |
最大推文数量 | 800 |
--type |
搜索类型:Latest(最新)或 Top(热门) | Latest |
--since |
开始日期 (YYYY-MM-DD) | - |
--until |
结束日期 (YYYY-MM-DD) | - |
--lang |
语言代码 (zh/en/ja 等) | - |
--min-faves |
最少点赞数 | - |
--min-retweets |
最少转推数 | - |
--filter |
内容过滤 (images/videos/links),可多次使用 | - |
--exclude |
排除内容 (replies/retweets),可多次使用 | - |
--verified |
仅获取认证用户推文 | False |
数据库字段
tweets 表包含以下字段:
| 字段 | 说明 |
|---|---|
tweet_id |
推文 ID |
created_at |
发布时间 |
text |
推文内容 |
lang |
语言 |
source |
发布来源 |
favorites |
点赞数 |
retweets |
转推数 |
replies |
回复数 |
quotes |
引用数 |
bookmarks |
书签数 |
views |
浏览量 |
conversation_id |
会话 ID |
author_id |
作者 ID |
author_name |
作者显示名 |
author_screen_name |
作者用户名 |
author_avatar |
作者头像 |
author_blue_verified |
蓝V认证 |
has_media |
是否有媒体 |
media_count |
媒体数量 |
has_quoted |
是否引用推文 |
quoted_tweet_id |
引用推文 ID |
quoted_author_name |
引用推文作者 |
quoted_text |
引用推文内容 |
hashtags |
话题标签 (JSON) |
urls |
链接 (JSON) |
user_mentions |
用户提及 (JSON) |
is_pinned |
是否置顶 |
fetch_time |
抓取时间 |
注意事项
- 数据自动保存到数据库,重复数据会自动跳过
- 脚本会自动处理分页,直到达到目标数量或无更多推文
- 连续 3 页无新推文时自动停止
- 请求间隔 0.3 秒,避免 API 限流
- 遇到 429 限流会自动等待并重试