【问题标题】:Collect data from twitter in json format and for particular time frame从 twitter 以 json 格式和特定​​时间范围收集数据
【发布时间】:2016-02-02 06:22:55
【问题描述】:

此代码仅流式传输数据。我想提取 3 天时间范围内的数据。

import tweepy
from tweepy import OAuthHandler
from tweepy import Stream
from tweepy.streaming import StreamListener

# will pass key and token
auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_secret)

class TweetsListener( StreamListener ):

    def on_data(self, data):
        try:
            with open('name.json', 'a') as f:
                f.write(data)
                return True
        except BaseException as e:
            print("Error on_data: %s" % str(e))
        return True

    def on_error(self, status):
        print(status)
        return True

twitter_stream = Stream( auth, TweetsListener() ) 
twitter_stream.filter( track=['XX'] )

【问题讨论】:

  • 你想提取前3天或者后3天的数据,就stream而言,你只能通过streaming API访问未来的数据。
  • 我想以 json 格式从 twitter 收集前 3 天的数据。你能帮帮我吗!

标签: python json time


【解决方案1】:

您正在使用 Twitter Streaming API,该 API 用于捕获具有给定条件的未来推文(发布具有给定搜索词的推文时会调用 on_data)。您需要使用 Twitter REST API 来搜索以前的数据。见tweepy.Search()

参数:

q – 搜索查询字符串

since_id – 仅返回 ID 大于(即更新于)的状态 指定的 ID。

【讨论】:

  • 您能更改此代码吗?可以保存为json格式。代替 csv。
  • auth = tweepy.auth.OAuthHandler('X', 'X') auth.set_access_token('X', 'X') api = tweepy.API(auth) # 打开/创建文件追加数据 csvFile = open('result.csv', 'a') #使用 csv Writer csvWriter = csv.writer(csvFile) for tweet in tweepy.Cursor(api.search, q="google", since="2014 -02-14", until="2014-02-15", lang="en").items(): #向csv文件写入一行/我使用encode utf-8 csvWriter.writerow([tweet.created_at , tweet.text.encode('utf-8')]) 打印 tweet.created_at, tweet.text csvFile.close()
  • 您可以使用原始问题中的代码,从on_data 方法只需将f.write(data) 更改为f.write(json.dumps(data))。不过你必须import json
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-08-02
  • 1970-01-01
  • 1970-01-01
  • 2017-12-21
  • 2016-12-13
  • 1970-01-01
  • 2015-12-08
相关资源
最近更新 更多