猿问

如何使用Tweepy按主题标签流式传输推文,并使用Tweepy进行计数过滤器?

因此,我想做的是从Twitters API直播推文:仅用于主题标签“Brexit”,仅限英语,以及特定数量的推文(1k - 2k)。


到目前为止,我的代码将实时流式传输推文,但无论我以何种方式修改它,我要么最终忽略计数并无限期地流式传输,要么我得到错误。如果我将其更改为仅流式传输特定用户的推文,则计数函数有效,但它会忽略主题标签。如果我为给定的主题标签流式传输所有内容,它将完全忽略计数。我在尝试修复它方面已经相当不错,但我缺乏经验,并且真的用它撞上了砖墙。


如果我能得到一些帮助,如何同时勾选所有这些框,将不胜感激!到目前为止,下面的代码将无限期地流式传输“英国脱欧”推文,因此忽略计数= 10


由于我玩它,代码的底部有点混乱,抱歉:


import numpy as np

import pandas as pd

import tweepy

from tweepy import API

from tweepy import Cursor

from tweepy.streaming import StreamListener

from tweepy import OAuthHandler

from tweepy import Stream

import Twitter_Credentials

import matplotlib.pyplot as plt


# Twitter client - hash out to stream all



class TwitterClient:

    def __init__(self, twitter_user=None):

        self.auth = TwitterAuthenticator().authenticate_twitter_app()

        self.twitter_client = API(self.auth)


        self.twitter_user = twitter_user


    def get_twitter_client_api(self):

        return self.twitter_client


# Twitter authenticator



class TwitterAuthenticator:

    def authenticate_twitter_app(self):

        auth = OAuthHandler(Twitter_Credentials.consumer_key, Twitter_Credentials.consumer_secret)

        auth.set_access_token(Twitter_Credentials.access_token, Twitter_Credentials.access_secret)

        return auth


class TwitterStreamer():

    # Class for streaming and processing live Tweets

    def __init__(self):

        self.twitter_authenticator = TwitterAuthenticator()


    def stream_tweets(self, fetched_tweets_filename, hash_tag_list):


        # this handles Twitter authentication and connection to Twitter API

        listener = TwitterListener(fetched_tweets_filename)

        auth = self.twitter_authenticator.authenticate_twitter_app()

        stream = Stream(auth, listener)

        # This line filters Twitter stream to capture data by keywords

        stream.filter(track=hash_tag_list)



www说
浏览 114回答 2
2回答

偶然的你

你尝试使用两种不同的方法来访问 Twitter API - 流式传输是实时的,搜索是一次性的 API 调用。由于流媒体是连续和实时的,因此无法对其应用结果计数 - 代码只是打开一个连接,说“嘿,从现在开始向我发送所有包含”的推文,并坐下来听。此时,你将放入 ,对于收到的每条推文,你都可以将它们写入一个文件。hash_tag_listStreamListener你可以在此处应用计数器,但需要将其包装在处理程序中,并增加收到的每条推文的计数器。当你到达1000条推文时,停止收听。StreamListeneron_data对于搜索选项,您有几个问题...第一个是你自2019年以来一直在要求推文,但标准搜索API只能回到7天。你显然只要求10条推文。但是,你编写该方法的方式是,对于 API 返回的 10 个集合中的每个推文,你然后创建一个实时流连接,并开始侦听和写入文件。所以这是行不通的。你需要选择一个 - 要么搜索1000条推文并将它们写入文件(从未设置),要么收听1000条推文并将它们写入文件(删除并直接跳转到主播)。TwitterStreamer()for Tweet in Cursor(api.search...

长风秋雁

只需将 # 标签符号添加到列表中的搜索短语,它就会匹配使用特定主题标签的推文。它区分大小写,因此您可能希望向搜索数组添加尽可能多的选项。仅使用“Brexit”匹配可能使用或可能不使用主题标签但包含关键字“Brexit”的推文。hash_tag_list = [“#Brexit”]
随时随地看视频慕课网APP

相关分类

Python
我要回答