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

使用Tweepy爬取推文时遇AttributeError: 'str' object has no attribute 'user'错误求助

解决Tweepy中AttributeError: 'str' object has no attribute 'user'错误

问题描述

使用Tweepy库获取推文时触发如下错误:

AttributeError: 'str' object has no attribute 'user'

数月前运行相同代码未出现该问题,当前代码及报错详情如下:

出错代码

def tweets_mining(csv_file, search_query, num_tweets):
    with open(csv_file, 'w', encoding='utf8', newline='') as file:
        thewriter = writer(file)
        header = ['tweet_id', 'time_created', 'tweet', 'location', 'retweets', 'likes']
        thewriter.writerow(header)

        for tweet in tweepy.Cursor(api.search_tweets,
                                   q=search_query,
                                   tweet_mode="extended",
                                   result_type="recent",
                                   lang="en").items(num_tweets):
            tweet_id = tweet.id
            time_created = tweet.created_at
            tweet = tweet.full_text
            location = tweet.user.location
            retweets = tweet.retweet_count
            likes = tweet.favorite_count
            row = [tweet_id, time_created, tweet, location, retweets, likes]
            thewriter.writerow(row)

search_term = "first search"

search_query = search_term + " -filter:links AND -filter:retweets AND -filter:replies"

tweets_mining('first_search.csv', search_query, 10)

报错详情

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_7884/2036184101.py in <module>
      3 search_query = search_term + " -filter:links AND -filter:retweets AND -filter:replies"
      4 
----> 5 tweets_mining('first_search.csv', search_query, 10)

~\AppData\Local\Temp/ipykernel_7884/1256763917.py in tweets_mining(csv_file, search_query, num_tweets)
     13             time_created = tweet.created_at
     14             tweet = tweet.full_text
---> 15             location = tweet.user.location
     16             retweets = tweet.retweet_count
     17             likes = tweet.favorite_count

AttributeError: 'str' object has no attribute 'user'

问题原因

第14行代码tweet = tweet.full_text将循环中原本的Tweepy推文对象覆盖成了字符串类型的推文内容。后续代码尝试调用tweet.user.location时,字符串对象没有user属性,因此触发报错。

修复代码

修改变量名避免覆盖原推文对象,将存储推文文本的变量改为tweet_text:

def tweets_mining(csv_file, search_query, num_tweets):
    with open(csv_file, 'w', encoding='utf8', newline='') as file:
        thewriter = writer(file)
        header = ['tweet_id', 'time_created', 'tweet', 'location', 'retweets', 'likes']
        thewriter.writerow(header)

        for tweet in tweepy.Cursor(api.search_tweets,
                                   q=search_query,
                                   tweet_mode="extended",
                                   result_type="recent",
                                   lang="en").items(num_tweets):
            tweet_id = tweet.id
            time_created = tweet.created_at
            # 改用新变量存储推文文本,避免覆盖原对象
            tweet_text = tweet.full_text
            location = tweet.user.location
            retweets = tweet.retweet_count
            likes = tweet.favorite_count
            row = [tweet_id, time_created, tweet_text, location, retweets, likes]
            thewriter.writerow(row)

search_term = "first search"

search_query = search_term + " -filter:links AND -filter:retweets AND -filter:replies"

tweets_mining('first_search.csv', search_query, 10)

说明

修改后,原tweet变量仍保留Tweepy推文对象的引用,后续调用tweet.user、tweet.retweet_count等属性时即可正常获取数据。之前代码未报错可能是当时未执行到覆盖变量后的属性调用逻辑,或代码存在细微差异。

内容的提问来源于stack exchange,提问作者Babatunde Akeredolu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 00:35:19