【问题标题】:Tweepy Search API Writing to File ErrorTweepy Search API 写入文件错误
【发布时间】:2014-03-25 10:57:43
【问题描述】:

新手python用户:

我创建了基于 api.search(不是流式 api)提取 10 条推文的文件。我得到一个屏幕结果,但不知道如何解析输出以保存到 csv。我的错误是 TypeError: expected a character buffer object。

我尝试使用 .join(str(x) 并得到其他错误。

我的代码是

import tweepy
import time
from tweepy import OAuthHandler
from tweepy import Cursor

#Consumer keys and access tokens, used for Twitter OAuth 
consumer_key = ''
consumer_secret = ''
atoken = ''
asecret = ''

# The OAuth process that uses keys and tokens
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(atoken, asecret)

# Creates instance to execute requests to Twitter API
api = tweepy.API(auth)

MarSec = tweepy.Cursor(api.search, q='maritime security').items(10)

for tweet in MarSec:
    print " "
    print tweet.created_at, tweet.text, tweet.lang

saveFile = open('MarSec.csv', 'a')
saveFile.write(tweet)
saveFile.write('\n')
saveFile.close()

任何帮助将不胜感激。我已经让我的 Streaming API 工作了,但是在使用这个 API 时遇到了困难。

谢谢。

【问题讨论】:

    标签: search python-2.7 twitter tweepy


    【解决方案1】:

    tweet 不是字符串或字符缓冲区。它是一个对象。将您的行替换为 saveFile.write(tweet.text) 即可。

    saveFile = open('MarSec.csv', 'a')
    for tweet in MarSec:
        print " "
        print tweet.created_at, tweet.text, tweet.lang
        saveFile.write("%s %s %s\n"%(tweet.created_at, tweet.lang, tweet.text))
    
    saveFile.close()
    

    【讨论】:

    • 嗨,我试过了,只有一条推文(最后一条)成功,但我想返回 3 项的完整数据集:文本、created_at 和语言我的输出文件。谢谢,仍然很难过。
    • tweet 仅存在于循环内,将文字移到那里,你应该完成了。
    • 非常感谢。移动到循环中,它现在可以工作了。我遇到了一个新错误 UnicodeEncodeError: 'ascii' codec can't encode character u'\u2026' in position 159: ordinal not in range(128) 我明天会研究。
    • 那是一个单独的问题 :) 如果您还需要帮助,请再次询问!
    • 感谢 @user3325317 的 stackoverflow.com/questions/21976599/… 帖子中的 csv writer 和 encode(utf-8) 让它工作。我现在会投票,但当我得到足够的分数时会投票。谢谢。
    【解决方案2】:

    我只是想为那些可能想要保存所有内容的人提供另一个版本 tweepy.models.Status 对象的属性,如果您还不确定要将每条推文的哪些属性保存到文件中。

    import json
    
    search_results = []
    for status in tweepy.Cursor(api.search, q=search_text).items(5000):
        search_results.append(status._json)
    
    with open('search_results.json', 'w') as f:
        json.dump(search_results, f)
    

    第一个块将搜索结果存储到字典列表中,第二个块将所有推文输出到一个 json 文件中。 请注意,如果您的搜索结果非常大,这可能会占用大量内存。

    【讨论】:

    • status._json 对象的大概大小是多少?
    【解决方案3】:

    这是 Twitter 在发送错误图片时出现问题时的经典错误代码。

    尝试查找您要上传的图片并检查图片的格式。

    我唯一做的就是删除我的 Windows 媒体播放器无法读取的图像,仅此而已!脚本运行完美。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-31
      • 1970-01-01
      • 2016-07-16
      • 2021-05-19
      • 2020-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多