from tweepy import Stream
from tweepy import OAuthHandler
from tweepy.streaming import StreamListener
import json
from pprint import pprint
data_file = open('twitter.json')
data = json.load(data_file)
##Json file with all the ckey, csecret, atoken, and asecret
pprint(data)
#consumer key, consumer secret, access token, access secret.
ckey = data["ckey"]
csecret = data["csecret"]
atoken = data["atoken"]
asecret = data["asecret"]
class listener(StreamListener):
def on_data(self, data):
all_data = json.loads(data)
tweet = all_data["text"]
username = all_data["user"]["screen_name"]
print((username,tweet))
return True
def on_error(self, status):
print (status)
auth = OAuthHandler(ckey, csecret)
auth.set_access_token(atoken, asecret)
上面的代码是访问twitter api的标准代码。但是,我需要将从twitter获得的tweets传输到一个.txt文件。我试着用下面的代码 twitterStream=流(auth,listener())
fid = open("cats based tweets.txt","w")
for tweet in twitterStream.filter(track=[cats]):
fid.write(tweet)
fid.close()
我打算在twitter上找到所有包含关键词cats的tweets/reposts,它确实是这样做的。但是,它也应该写一个包含所有tweets但没有的txt文件。有人能告诉我需要做什么来修复它吗。
编辑:我使用了你们编写的代码,但它并没有返回所有的tweets。打印出来大概是5或6,然后是错误
RuntimeError: No active exception to reraise
我不知道为什么。为什么会这样,因为我知道不应该这样
我在一个项目中完成了这项工作,我的方法涉及在
StreamListener
对象中更改on_data
方法。 我的代码如下:实际代码中的一些内容,而不是重新定义
Listener
或on_data
的地方。按顺序:file_path
。别忘了在这里添加.txt扩展名。调用流和侦听器:
使用过滤器。我的是坐标,我试了一下过滤器,只是我的代码没有停止。这里是为您改编的:
现在tweet中的文本应该在流中出现文本时写入文件。看看你的文件大小,你会发现它在增加。特别是,如果你的过滤器是关于猫的。网络爱猫。
请参阅下面的链接,然后您将了解如何将tweets保存到数据库以及本地文件。
https://github.com/anandstarz/Scrapee/blob/master/tweets
我想您提供的代码片段中有一个轻微的缩进错误,但是我将尝试使用两种方法来修复您的错误,第一种方法是通过更正缩进,第二种方法是更改您的
on_data
方法方法1:
或者您可以简单地将上述代码编写为:
方法2:
在第二种方法中,我们可以更改
on_data
方法,这样当程序接收到新的tweet时,它会打开文件并直接写入其中,但为此,我们需要以追加模式打开文件,因为以w
可写模式打开文件会一次又一次地覆盖文件的内容。相关问题 更多 >
编程相关推荐