如何使用tweepy从一个开始日期到结束日期使用python流式处理tweets?

2024-09-30 03:23:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在使用python对twitter数据进行情绪分析(对这个问题不一定很重要)做一些研究,我是python的初学者。我理解twitter流媒体API限制用户只能访问前7天,除非你申请一个完整的企业搜索,打开整个档案。我最近从twitter上获得了这个研究项目的完整存档,但是我无法指定我想要流到csv文件中的tweets的开始和结束日期。这是我的代码:

import pandas as pd
from tweepy import Stream
from tweepy import OAuthHandler
from tweepy.streaming import StreamListener


ckey = 'xxxxxxxxxxxxxxxxxxxxxxx'
csecret = 'xxxxxxxxxxxxxxxxxxxxxxx'
atoken = 'xxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxx'
asecret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx'


# =============================================================================
# def sentimentAnalysis(text):
#     output = '0'
#     return output
# =============================================================================

class listener(StreamListener):
    def on_data(self, data):
        tweet = data.split(',"text":"')[1].split('","source')[0]
        saveMe = tweet+'::'+'\n'
        output = open('output.csv','a')
        output.write(saveMe)
        output.close()
        return True

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

auth = OAuthHandler(ckey, csecret)
auth.set_access_token(atoken, asecret)
twitterStream = Stream(auth, listener())
twitterStream.filter(track=["#weather"], languages = ["en"])

现在这个代码流完美地记录了过去7天的twitter日期。我试着把底线改成

^{pr2}$

但这将返回此错误::filter()获得意外的关键字参数“since”。在

根据给定的日期帧进行筛选的正确方法是什么?在


Tags: csv代码fromimportauthoutputdatastream
1条回答
网友
1楼 · 发布于 2024-09-30 03:23:13

tweepy不提供“since”参数,因为您可以检查自己here。在

要获得所需的输出,您必须使用api.user_timeline,遍历页面直到达到所需的日期,例如:

import tweepy
import datetime

# The consumer keys can be found on your application's Details
# page located at https://dev.twitter.com/apps (under "OAuth settings")
consumer_key=""
consumer_secret=""

# The access tokens can be found on your applications's Details
# page located at https://dev.twitter.com/apps (located
# under "Your access token")
access_token=""
access_token_secret=""

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)

api = tweepy.API(auth)
page = 1
stop_loop = False
while not stop_loop:
    tweets = api.user_timeline(username, page=page)
    if not tweets:
        break
    for tweet in tweets:
        if datetime.date(YEAR, MONTH, DAY) < tweet.created_at:
            stop_loop = True
            break
        # Do the tweet process here
    page+=1
    time.sleep(500)

请注意,您需要更新代码以满足您的需要,这只是一个通用的解决方案。

相关问题 更多 >

    热门问题