使用Tweepy从Twitter获取用户ID时出现错误求助
解决Tweepy获取Twitter用户ID时的错误
嘿,我看你用Tweepy抓取Twitter数据时碰到问题了,而且代码还没写完对吧?先帮你理清楚几个关键问题,再给你修正后的完整方案:
你当前代码的核心问题
- 语法错误:最后一行的
tweet.creat...是未完成的代码,直接运行会触发SyntaxError,这是最直观的问题。如果你的目标是获取用户ID,应该访问tweet.user.id或者tweet.user.id_str(更推荐后者,因为Twitter用户ID是超大整数,用字符串存储能避免溢出问题)。 - 文件处理不严谨:直接打开CSV文件后没手动关闭,容易导致资源泄漏;而且没指定编码,写入特殊字符时会乱码。
- 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
相关产品推荐
相关产品推荐

