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 requests推文搜索监控循环爬虫替代

快速结论

先看这页最重要的判断

如果你只是想先判断这条路线适不适合自己,先看这几条就够了。

快速判断:哪条 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. 1

    先跑 demo repo

    clone TonyGJJ/twitter_api,创建 Python 3.9+ virtualenv,安装 requirements,复制 .env.example 为 .env,设置 TWTAPI_API_KEY,然后运行 python app.py 或 CLI 命令。

  2. 2

    替换示例 query

    从内置 trends、search、user、tweet-detail 命令开始,保存 tweet ID、正文、作者、时间、来源 URL、命中 query 和链接等字段。

  3. 3

    保存 ID 和 checkpoint

    保存 tweet ID、author ID、时间戳和 last-run 标记,用于去重和恢复。

  4. 4

    路由有用结果

    过滤垃圾内容、转发、重复 ID 和弱匹配后,写入 CSV、Sheets、数据库、Slack、webhook handler(需自建投递) 或 AI 摘要步骤。

  5. 5

    上 cron 前做一次可靠性检查

    用同一个 query 连跑两次,确认脚本会跳过重复 tweet ID、清楚记录失败,并能从 last successful checkpoint 恢复。

  6. 6

    把 notebook 探索和定时任务分开

    notebook 用来设计 query、抽样和分析;周期采集放到小脚本或 worker 里,保留配置、checkpoint、日志和可预测输出。

  7. 7

    加一个 dry-run 模式

    dry run 应该打印 query、目的地、结果数、前几条 tweet URL、跳过的重复项和预计写入数量。这样定时任务写入生产数据前更容易复核。

  8. 8

    使用小 worker 文件结构

    实用结构可以是 config.py 放环境变量,client.py 放 TwtAPI 调用,store.py 放 checkpoint,transform.py 做过滤,destinations.py 写 CSV 或 Slack,worker.py 负责定时运行。

  9. 9

    处理空结果和部分失败

    把空结果和 API 错误分开记录,只对有限失败做重试,保留 last successful checkpoint,并把投递失败写进 retry queue 或复核文件。

  10. 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 代码花在存储、过滤、路由和摘要上。