SuperAPI AI 工具集

x-tweet-fetcher

数据与分析

查看项目

更新于 10-16 09:21

技能介绍

用途

X Tweet Fetcher 是一个 X(Twitter)推文爬取 Skill,用于抓取并保存推文内容,支持单条推文抓取与用户时间线抓取,适合需要存档、研究或导出推文数据的场景。

主要能力

  • 支持单条推文爬取
  • 支持用户时间线爬取
  • 自动提取推文文本、作者、时间戳
  • 支持长文(longform)推文
  • 保存完整页面截图
  • 导出 JSON 格式结果
  • 支持虚拟环境(如 playwright-env)
  • 支持无头模式(无 UI 服务器部署)
  • 提供命令行工具支持
  • 支持直接调用接口(无需手动运行脚本)

使用方式

命令行工具

抓取单条推文: python3 skills/x-tweet-fetcher/scripts/fetch.py
https://x.com/heynavtoor/status/2028148844891152554

抓取用户推文: python3 skills/x-tweet-fetcher/scripts/fetch.py
--user elonmusk --max-tweets 20

指定输出目录: python3 skills/x-tweet-fetcher/scripts/fetch.py
https://x.com/heynavtoor/status/2028148844891152554
--output ./x_tweets

虚拟环境运行

方式 1: 激活虚拟环境后运行

source playwright-env/bin/activate python3 skills/x-tweet-fetcher/scripts/fetch.py <url>

方式 2: 使用提供的包装脚本

python3 skills/x-tweet-fetcher/scripts/run_in_venv.py
<url> --venv /path/to/playwright-env

直接调用(推荐)

直接向助手提供推文 URL,由其自动执行并返回结果。

在代码中使用

from x_tweet_fetcher import fetch_tweet, fetch_user_tweets

抓取单条推文

result = fetch_tweet("https://x.com/heynavtoor/status/2028148844891152554") print(f"作者: {result['author']}") print(f"时间: {result['timestamp']}") print(f"内容: {result['text'][:500]}")

抓取用户推文

results = fetch_user_tweets("elonmusk", max_tweets=20) for tweet in results['tweets']: print(f"{tweet['author']}: {tweet['text'][:100]}")

命令行参数(fetch.py)

参数: URL X 推文 URL(与 --user 二选一)

选项: -u, --user TEXT 用户名(与 URL 二选一) -m, --max-tweets INTEGER 最大推文数量(默认: 20) -o, --output PATH 输出目录(默认: ./x_tweets) --no-screenshot 不保存截图 --headless BOOLEAN 无头模式(默认: true) --timeout INTEGER 超时时间(毫秒,默认: 120000) -h, --help 显示帮助信息

其他脚本

fetch_direct.py:直接调用脚本(已配置虚拟环境) python3 skills/x-tweet-fetcher/fetch_direct.py <tweet_url>

run_in_venv.py:虚拟环境运行工具 python3 skills/x-tweet-fetcher/scripts/run_in_venv.py
<url> --venv /path/to/playwright-env

输出说明

单条推文

每次抓取会创建一个以时间戳命名的目录: x_tweets/ └── 20260302_142000/ ├── tweet.json # JSON 格式结果 └── tweet.png # 完整页面截图

tweet.json 结构: { "url": "https://x.com/heynavtoor/status/2028148844891152554", "fetch_time": "2026-03-02T14:20:00.000000", "tweet": { "tweet_id": "2026-03-01T16:42:20.000Z_1234567890", "text": "推文内容...", "full_text": "完整推文内容(包含作者信息等)...", "author": "Nav Toor @heynavtoor", "timestamp": "2026-03-01T16:42:20.000Z", "extracted_at": "2026-03-02T14:20:00.000000" } }

用户时间线

x_tweets/ └── elonmusk_20260302_142000/ ├── tweets.json # JSON 格式结果 └── timeline.png # 时间线截图

tweets.json 结构: { "username": "elonmusk", "url": "https://x.com/elonmusk", "fetch_time": "2026-03-02T14:20:00.000000", "tweets_collected": 20, "tweets": [ { "tweet_id": "...", "text": "...", "author": "...", "timestamp": "...", "extracted_at": "..." } ] }

配置文件

可通过创建 config.json 自定义默认配置: { "headless": true, "timeout": 120000, "output_dir": "./x_tweets", "save_screenshot": true, "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36..." }

使用示例

示例 1: 抓取单条推文 python3 skills/x-tweet-fetcher/scripts/fetch.py
https://x.com/heynavtoor/status/2028148844891152554

示例 2: 抓取用户推文 python3 skills/x-tweet-fetcher/scripts/fetch.py
--user elonmusk --max-tweets 20

示例 3: 直接调用(最简单) 直接告诉助手推文 URL,助手会自动执行并返回结果概要。

示例 4: 在虚拟环境中使用 python3 skills/x-tweet-fetcher/scripts/run_in_venv.py
https://x.com/heynavtoor/status/2028148844891152554
--venv /opt/playwright-env

最佳实践

  • 使用虚拟环境: 隔离依赖,避免冲突
  • 合理设置超时: X 页面加载可能较慢,建议 120 秒
  • 控制抓取频率: 避免账号被限制
  • 使用无头模式: 服务器部署时使用 headless: true
  • 定期检查输出: 确保内容完整

注意事项

X 有较强的反爬机制,请合理使用;可能需要登录账号才能获取完整内容;建议使用 cookies 方式添加账户(参考 twscrape);遵守 X 的服务条款,仅用于个人学习和研究。

故障排除

问题: 找不到模块 解决方案: 确保在正确的虚拟环境中运行,或安装依赖: pip install playwright playwright install chromium

问题: 浏览器无法启动 解决方案: 安装系统依赖: sudo apt install -y libnss3 libnspr4 libatk1.0-0 libatk-bridge2.0-0
libcups2 libdrm2 libxkbcommon0 libxcomposite1 libxdamage1
libxfixes3 libxrandr1 libgbm1 libasound2

问题: 提取不到推文文本 解决方案: 检查页面是否完全加载;尝试增加超时时间;页面结构可能变化,需要更新选择器。

问题: 页面加载超时 解决方案: 增加超时时间: python3 skills/x-tweet-fetcher/scripts/fetch.py
<url> --timeout 180000

相关资源

Playwright 官方文档;X Developer Platform;twscrape - 更强大的 X API 爬虫。

更新日志

v1.0.0:初始版本,支持单条推文抓取、用户时间线抓取、长文(longform)推文、JSON 导出、完整页面截图、虚拟环境、命令行工具及直接调用接口。