使用tweepy时在python中写入文件的问题

时间:2014-02-12 14:08:59

标签: python twitter tweepy

我正在开发一个我需要提取推文的项目。我在python中使用了tweepy,使用各种在线信息来源,因为我对python不太满意。我遇到了两个我无法通过谷歌搜索解决的问题! 1)我希望大约1000存储在一个文件中。我想我可以使用一个count变量,但不知道在哪里以及如何使用它。基本上,一旦我得到1000条推文,如何终止程序? 2)打印到文件时,我在on_status上收到一条错误,上面写着“文件”Tweet3.py“,第20行     print“Tweet Text:%s”%status.text UnicodeEncodeError:'ascii'编解码器无法对位置65中的字符u'\ u2019'进行编码:序数不在范围内(128)“ - 我怎么可能解决这个错误?

以下是代码:

import sys
import tweepy
import webbrowser
fp=open("Tweets.txt","w")

Q=['Earthquake','Flood']#Filters

c_key = '...'
c_secret = '...'
a_token= '...'
a_token_sec= '...'

auth = tweepy.OAuthHandler(c_key, c_secret)
auth.set_access_token(a_token, a_token_sec)

class CustomStreamListener(tweepy.StreamListener):

     def on_status(self, status):
        print "----------NEW TWEET!-----------"
        print "Tweet Text : %s"%status.text
        fp.write(status.text) 
        print "Author's name : %s"%status.author.screen_name 
        print "Time/Date of creation : %s"%status.created_at
        print "Source of Tweet : %s"%status.source
        print "Coordinates : %s"%status.coordinates

streaming_api = tweepy.streaming.Stream(auth, CustomStreamListener(), timeout=60)
print "Displaying Tweets for filters :"
#print Q
#streaming_api.filter(follow=None, track=Q)
streaming_api.filter(locations=[-125,25,-65,48], async=False)

1 个答案:

答案 0 :(得分:1)

在将文本写入文件之前先对其进行编码:

status.text.encode('utf8')

修改

请改为尝试:

import codecs
fp = codecs.open("Tweets.txt", "w", "utf-8")
fp.write(status.text) 

修改

创建一个计数器,并在每次发布新推文时递增它,例如:

counter = 0
MAX_TWEETS = 1000
<_>在on_status方法中:

counter += 1
if counter >= MAX_TWEETS:
    sys.exit()