You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Tweepy从Twitter获取用户ID时出现错误求助

解决Tweepy获取Twitter用户ID时的错误

嘿,我看你用Tweepy抓取Twitter数据时碰到问题了,而且代码还没写完对吧?先帮你理清楚几个关键问题,再给你修正后的完整方案:

你当前代码的核心问题

  1. 语法错误:最后一行的tweet.creat...是未完成的代码,直接运行会触发SyntaxError,这是最直观的问题。如果你的目标是获取用户ID,应该访问tweet.user.id或者tweet.user.id_str(更推荐后者,因为Twitter用户ID是超大整数,用字符串存储能避免溢出问题)。
  2. 文件处理不严谨:直接打开CSV文件后没手动关闭,容易导致资源泄漏;而且没指定编码,写入特殊字符时会乱码。
  3. API方法过时:Tweepy 4.x版本之后,api.search已经被重命名为api.search_tweets,继续用旧方法会报错。

修正后的完整代码

#!/usr/bin/python
import tweepy
import csv

# 初始化API认证
auth = tweepy.auth.OAuthHandler('XXXXXX', 'XXXXXXX')
auth.set_access_token('XXX-XXX', 'XXX')
# 开启限流等待,避免频繁请求被封禁
api = tweepy.API(auth, wait_on_rate_limit=True)

# 使用with语句安全管理文件,自动处理关闭和编码
with open('result.csv', 'a', encoding='utf-8', newline='') as csvFile:
    csvWriter = csv.writer(csvFile)
    # 可选:第一次运行时写入表头
    # csvWriter.writerow(['推文ID', '用户ID', '发布时间', '推文内容'])
    
    # 遍历搜索结果,注意方法名改为search_tweets
    for tweet in tweepy.Cursor(api.search_tweets, q="google", since="2014-02-14", until="2014-02-15", lang="en").items():
        # 写入用户ID等字段,用id_str避免整数溢出
        csvWriter.writerow([
            tweet.id_str,
            tweet.user.id_str,
            tweet.created_at,
            tweet.text  # 已经通过文件编码处理,无需额外encode
        ])

额外注意事项

  • 权限检查:确保你的Twitter开发者应用拥有Read权限,否则API会返回权限错误,需要去开发者后台调整。
  • 异常处理:如果运行时遇到推文数据缺失(比如某些特殊推文没有user字段),可以加个判断,比如if tweet.user: csvWriter.writerow(...),避免报错中断程序。
  • 限流问题:Twitter API有请求次数限制,wait_on_rate_limit=True会让程序自动等待限流结束,不用手动处理。

内容的提问来源于stack exchange,提问作者Chris D'mello

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:27:21