仅按语言筛选推特订阅源



我正在使用Tweepy API来提取Twitter提要。我只想提取特定语言的所有推特订阅源。仅当提供了track筛选器时,语言筛选器才起作用。以下代码返回406错误:

l = StdOutListener()
auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
stream = Stream(auth, l)
stream.filter(languages=["en"])

如何使用Tweepy从特定语言中提取所有推文?

您不能(没有特殊访问权限)。流式传输所有推文(未经过滤)需要连接到消防水管,这仅在特定的使用情况下由Twitter授予。老实说,消防水管并不是真正必要的——正确使用track会让你发更多的推文,而你不知道该怎么办。

试着使用这样的东西:

stream.filter(languages=["en"], track=["a", "the", "i", "you", "u"]) # etc

用这样的词过滤会得到很多推特。如果你想了解最常用单词的真实数据,请查看《时代》杂志的这篇文章:推特上500个最常用单词。你最多可以使用400个关键词,但在给定的时间间隔内,这可能会接近推文的1%限制。如果你的track参数在给定时间匹配60%的推文,你仍然只能得到1%(这是一个很大的推文)。

尝试Cursor()中的lang='en'参数,例如

tweepy.Cursor(.. lang='en')

除了直接获得过滤后的推文外,您还可以在获得不同语言的所有推文后通过以下方式进行过滤:

tweets = api.search("python")
for tweet in tweets:
   if tweet.lang == "en":
      print(tweet.text)
      #Do the stuff here

希望能有所帮助。

您可以在github代码中看到track方法的参数https://github.com/tweepy/tweepy/blob/master/tweepy/streaming.py

将语言放入ISO_639-1_codes的数组中。

它们是:

filter(self, follow=None, track=None, is_async=False, locations=None,
               stall_warnings=False, languages=None, encoding='utf8', filter_level=None):

因此,要通过语言进行跟踪,请输入:

class Listener(StreamListener):
    def on_data(self, data):
        j = json.loads(data)
        t = {
          'screenName' : j['user']['screen_name'],
          'text:': j['text']
          }
        print(t)
        return(True)
    def on_status(self, status):
        print(status.text)

auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
stream = Stream(auth=auth, listener=Listener(),wait_on_rate_limit=True,wait_on_rate_limit_notify=True)
stream.filter(track=['Trump'],languages=["en","fr","es"])

Tweepy搜索允许获取特定语言的推文。您可以使用ISO 639-1代码来指定语言参数的值。以下代码将获取指定语言的全文推文(以下示例为英语)

    auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_token, access_token_secret)
    api = tweepy.API(auth)
    tweets = api.search(q = keywordtosearch, lang = 'en', count = 100, truncated = False, tweet_mode = 'extended')
    for tweet in tweets:
        print(tweet.full_text)
        #add your code

这对我有效。

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
a=input("Enter Tag: ")
tweets = api.search(a, count=200)
a=[]
for tweet in tweets:
    if tweet.lang == "en":
        a.append(tweet.text)

借助GetOldTweets3(https://pypi.org/project/GetOldTweets3/),您可以通过筛选几个条件来下载推文(甚至是旧推文),如下所示:

tweetCriteria = got.manager.TweetCriteria().setQuerySearch('Coronavirus')
                                       .setSince("2020-02-15")
                                       .setUntil("2020-03-29")
                                       .setMaxTweets(5)
                                       .setNear('India')
                                       .setLang('en')
tweets = got.manager.TweetManager.getTweets(tweetCriteria)
for tweet in tweets:
    print(tweet.text)
    print(tweet.date)
    print(tweet.geo)
    print(tweet.id)
    print(tweet.permalink)
    print(tweet.username)
    print(tweet.retweets)
    print(tweet.favorites)
    print(tweet.mentions)
    print(tweet.hashtags)
    print('*'*50)

相关内容

  • 没有找到相关文章

最新更新