| name | twitter-fetcher |
| description | 用户要求抓取某个 Twitter 用户的推文,用户要求搜索 Twitter 上的特定关键词,用户提到 "拉取推文"、"抓取 Twitter"、"获取推特上关于XX的讨论或者 用户提供 Twitter 用户名并希望获取其推文的时候进行调用 |
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 限流会自动等待并重试