Twitter API Python
用 Python 做 Twitter/X 搜索、监控和报告,不必从爬虫开始
搜索 Twitter API Python 的人通常想要能跑的脚本,不想先听供应商作文。可以先跑 TwtAPI Python demo:github.com/TonyGJJ/twitter_api。它有 Flask 页面、CLI 命令、.env 配置和一个可复用 client,内置 Trends、Search、UserResultByScreenName、TweetDetail。跑通之后再做真正的路线选择:需要官方账号动作时用 Tweepy 和官方 X API;小型后端任务可用 requests;公开搜索、lookup、timeline 和 monitoring 可用 TwtAPI;Python 爬虫只适合你接受 session、代理、重试和失效成本时。
快速结论
先看这页最重要的判断
如果你只是想先判断这条路线适不适合自己,先看这几条就够了。
快速判断:哪条 Python 路线合适?
好的标杆文章会先告诉你什么时候不该用它。
- 需要发帖、OAuth、账号动作、广告、DM 或合规要求时,走官方 X API。
- 本地爬虫可以做周末实验,但定时监控需要重试、日志、去重、checkpoint、代理/session 处理,以及漏跑后的恢复。
- 使用 github.com/TonyGJJ/twitter_api,它包含 Flask 页面、CLI 示例和可复用 client,已内置 Trends、Search、UserResultByScreenName、TweetDetail。
- 把推文、hashtag、提及、作者、来源 URL 和时间戳收集到 CSV、Sheets、notebook、Postgres、仓库或 BI。
决策指南
这页应该帮你做出什么判断
适合使用这条路线
把推文、hashtag、提及、作者、来源 URL 和时间戳收集到 CSV、Sheets、notebook、Postgres、仓库或 BI。
先不要用这条路线
如果问题不是接入、凭证、限制或错误处理,而是采购路线选择,先看价格页或替代方案对比页。
第一步验证
clone TonyGJJ/twitter_api,创建 Python 3.9+ virtualenv,安装 requirements,复制 .env.example 为 .env,设置 TWTAPI_API_KEY,然后运行 python app.py 或 CLI 命令。
成功信号
本地爬虫可以做周末实验,但定时监控需要重试、日志、去重、checkpoint、代理/session 处理,以及漏跑后的恢复。
适合谁
适合需要重复跑数据任务,而不是只写 demo 的 Python 开发者
这个页面面向第一次请求成功之后仍然要继续运行的脚本。
数据和分析脚本
把推文、hashtag、提及、作者、来源 URL 和时间戳收集到 CSV、Sheets、notebook、Postgres、仓库或 BI。
监控任务
定时搜索、按 tweet ID 去重、保存 checkpoint,并把高价值帖子由自建流程发送到 Slack、邮件、Discord、webhook handler 或客服队列。
AI 工作流
在摘要、分类、RAG 或 agent 流程前,用 Python 检索带来源的 Twitter/X 数据。
想要可运行 starter 的团队
clone github.com/TonyGJJ/twitter_api,设置 TWTAPI_API_KEY,先跑 Flask 页面或 CLI,再把示例 query 换成自己的任务。
为什么有这页
Python 让第一版脚本很容易,难的是重复工作流
开发者搜索不是只想看代码,而是在选哪条路线能撑住生产。
爬虫重复运行后才变贵
本地爬虫可以做周末实验,但定时监控需要重试、日志、去重、checkpoint、代理/session 处理,以及漏跑后的恢复。
官方 SDK 解决的是另一类问题
当团队有官方权限和账号动作需求时,SDK 有用;但它不会消除价格、审批、endpoint 或 quota 决策。
真实 demo 让第一小时变简单
TonyGJJ/twitter_api 已经接好 Flask、CLI、环境变量和 TwtAPI client,第一步是跑通真实 Search 或 TweetDetail 请求,而不是重新发明项目结构。
生产脚本需要无聊但清楚的记录
定时运行前,先决定 tweet ID、来源 URL、命中 query、last-run checkpoint、重试次数和下游投递状态存在哪里。
demo 应该变成小 worker,而不是永远停在 notebook
Flask 页面或 CLI 适合证明 query 有用;重复采集应该移到带配置、日志、checkpoint 和稳定输出表的小 worker。notebook 更适合抽样和分析。
文件结构要让失败变得无聊
把 config、client、checkpoint 存储、转换逻辑、输出目的地和 scheduler entrypoint 分开放,这样失败后能重跑,不用重写整个脚本。
Python 代码要保留 raw evidence
保存原始 response ID、来源 URL、命中 query、创建时间、作者 handle 和规范化字段。原始证据还在,摘要和分类才更容易被信任。
Python 友好能力
大多数 Python 任务最先需要的 endpoint
从能直接映射到脚本任务的 API 调用开始。
| 维度 | 该确认什么 | 为什么重要 |
|---|---|---|
| python_demo_repo | 先跑 TwtAPI Python demo | 使用 github.com/TonyGJJ/twitter_api,它包含 Flask 页面、CLI 示例和可复用 client,已内置 Trends、Search、UserResultByScreenName、TweetDetail。 |
| search_tweets | 按关键词、hashtag、提及或账号搜索推文 | 用于监控、研究、客户反馈、竞品跟踪和 AI 检索。 |
| get_user_by_username | 查询用户上下文 | 在保存、路由、打分或摘要前补充作者信息。 |
| get_user_tweets | 拉取账号时间线 | 当单条推文不足以判断上下文时,用账号历史继续复核。 |
Python 工作流
实用的 Python 工作流应该短而无聊
目标不是聪明爬虫,而是明天还能跑的脚本。
- 1
先跑 demo repo
clone TonyGJJ/twitter_api,创建 Python 3.9+ virtualenv,安装 requirements,复制 .env.example 为 .env,设置 TWTAPI_API_KEY,然后运行 python app.py 或 CLI 命令。
- 2
替换示例 query
从内置 trends、search、user、tweet-detail 命令开始,保存 tweet ID、正文、作者、时间、来源 URL、命中 query 和链接等字段。
- 3
保存 ID 和 checkpoint
保存 tweet ID、author ID、时间戳和 last-run 标记,用于去重和恢复。
- 4
路由有用结果
过滤垃圾内容、转发、重复 ID 和弱匹配后,写入 CSV、Sheets、数据库、Slack、webhook handler(需自建投递) 或 AI 摘要步骤。
- 5
上 cron 前做一次可靠性检查
用同一个 query 连跑两次,确认脚本会跳过重复 tweet ID、清楚记录失败,并能从 last successful checkpoint 恢复。
- 6
把 notebook 探索和定时任务分开
notebook 用来设计 query、抽样和分析;周期采集放到小脚本或 worker 里,保留配置、checkpoint、日志和可预测输出。
- 7
加一个 dry-run 模式
dry run 应该打印 query、目的地、结果数、前几条 tweet URL、跳过的重复项和预计写入数量。这样定时任务写入生产数据前更容易复核。
- 8
使用小 worker 文件结构
实用结构可以是 config.py 放环境变量,client.py 放 TwtAPI 调用,store.py 放 checkpoint,transform.py 做过滤,destinations.py 写 CSV 或 Slack,worker.py 负责定时运行。
- 9
处理空结果和部分失败
把空结果和 API 错误分开记录,只对有限失败做重试,保留 last successful checkpoint,并把投递失败写进 retry queue 或复核文件。
- 10
加一个很小的验收测试
脚本交给别人前,用一个关键词、一个用户名和一个 tweet ID 跑一遍。确认它能保存稳定 ID、来源 URL、时间戳和投递状态,而不是只能靠人看 terminal 输出。
FAQ
Python 开发者选择 Twitter/X API 路线前常见问题
代码通常不难,真正要选的是 access model。
应该用 Tweepy 还是 TwtAPI?
走官方 X API 时用 Tweepy。任务是公开搜索、账号查询、时间线、监控或 AI 工作流,并希望更轻的第三方 API 路线时,可以用 TwtAPI。
可以用 Python requests 吗?
可以。TwtAPI 适合普通 Python HTTP requests、后端任务、notebook、队列、cron 脚本和自动化 worker。脚本变成重复基础设施前,要先存 ID 并处理重试。
有没有现成的 Python 示例仓库?
有。github.com/TonyGJJ/twitter_api 是 TwtAPI Python demo,包含 Flask 页面、CLI 示例、环境变量配置,以及 trends、search、user lookup、tweet detail 的示例调用。
Python 爬虫会不会更便宜?
只在部分实验里可能更便宜。任务重复后,要把账号/session、失败、重试、代理、清理和工程时间算进去。
脚本定时运行前应该补什么?
补环境变量配置、重试上限、checkpoint 存储、重复保护、结构化日志,以及清楚的输出位置,例如 CSV、Postgres、Sheets、Slack 或 webhook。
一行 Python 采集结果应该包含什么?
建议保存 tweet ID、URL、正文、作者 handle 或 ID、时间、命中 query、抓取时间、去重 key、补全状态、目的地状态,以及后续人工复核标签。
Python 项目结构应该长什么样?
保持无聊:config 放环境变量,client 放 API 调用,store 放 checkpoint,transform 做过滤,destinations 负责输出,再用一个 worker 入口支持本地、cron 或队列运行。
怎么把 TonyGJJ/twitter_api demo 变成自己的任务?
把 demo 当作 proof step,然后把 client 模式复制到小 worker 里。用配置替换示例 query,保存 ID 和 checkpoint,加 dry run,并先接一个输出目的地,再继续加自动化。
什么测试通过后,Python 任务才算接近 production-ready?
至少测一次关键词搜索、一次用户查询、一次 tweet detail、一次空结果、一次重复运行和一次目的地写入失败。如果这六件事都很无聊,脚本就更接近真实工作流。
Python 里应该怎么处理重试?
对临时 API 或网络失败做短且有上限的重试,输出成功前不要推进 checkpoint,并记录跳过的重复项、空结果、投递失败和最终运行状态。
下一步
让 Python 脚本专注在真正的工作流上
用 API 负责检索,把 Python 代码花在存储、过滤、路由和摘要上。