首页 > 解决方案 > 记录给定主题的推文问题

问题描述

我想指出我已经知道如何将用户的推文保存在文件中。现在我的问题是我希望能够将给定主题的推文保存在文件中。

问题是,一旦我尝试“转换”程序,就会得到错误“状态”对象不可迭代,如下所示:

感谢那些能够提供帮助的人:)

search_word = input("subject ? \n")

for tweet in tweepy.Cursor(api.search, q = search_word, lang = "en", since = "2019-04-01").items(3000):
    z = [x for x in tweet]
    with open('%s_tweets.json' % search_word, 'w') as f:
        json.dump(z, out)

Traceback (most recent call last):
  File "C:/Users/TheoLC/Desktop/python/twitter_search/collect+200tw.py", line 17, in <module>
    z = [x for x in tweet]
TypeError: 'Status' object is not iterable

标签: pythontweepytweets

解决方案


您希望对上面的代码做什么并不完全清楚。对于只看一个片段的人来说,有很多东西是不适合的,所以我有一些例子可以帮助你完成一些你可能正在尝试做的事情。


您当前的代码失败的原因是因为您试图用您的z=行迭代一个 Status 对象。该对象在结构上类似于 JSON。你可以在这里看到一个例子。

这意味着您必须访问特定属性才能迭代它们,您不能迭代对象本身。例如,如果您想从推文中获取文本,您可以将您的行更改为:

z = [x for x in tweet.text]

如果您只是想将推文的全部信息放入 JSON 文件(即状态对象放入 JSON 文件),那么您根本不需要迭代它,您只需json.dump()对象即可。为此,请删除您的z=行,并将您的 json 转储行更改为

json.dump(tweet._json, out)

将您的代码保留为:

search_word = input("subject ? \n")

for tweet in tweepy.Cursor(api.search, q = search_word, lang = "en", since = "2019-04-01").items(3000):
    with open('%s_tweets.json' % search_word, 'w') as f:
        json.dump(tweet._json, out)

希望有帮助。(你没有问过这个问题,但作为附录,我认为你的数量.items()可能太高了。我认为 API 限制会迫使你减少这个)。


推荐阅读