Tweepy - 排除转推

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tweepy - 排除转推相关的知识,希望对你有一定的参考价值。

最终目标是使用tweepy api搜索专注于主题(即docker)和EXCLUDE转发。我已经看过提及不包括转推的其他主题,但它们完全适用。我试图将我学到的知识融入到下面的代码中,但我相信“如果不是”代码片段在错误的地方。任何帮助是极大的赞赏。

#!/usr/bin/python
import tweepy
import csv #Import csv
import os

# Consumer keys and access tokens, used for OAuth
consumer_key = 'MINE'
consumer_secret = 'MINE'
access_token = 'MINE'
access_token_secret = 'MINE'

# OAuth process, using the keys and tokens
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)


api = tweepy.API(auth)
# Open/Create a file to append data
csvFile = open('docker1.csv', 'a')
#Use csv Writer
csvWriter = csv.writer(csvFile)


ids = set()
for tweet in tweepy.Cursor(api.search, 
                    q="docker", 
                    Since="2016-08-09", 
                    #until="2014-02-15", 
                    lang="en").items(5000000):
if not tweet['retweeted'] and 'RT @' not in tweet['text']:
    #Write a row to the csv file/ I use encode utf-8
    csvWriter.writerow([tweet.created_at, tweet.text.encode('utf-8'), tweet.favorite_count, tweet.retweet_count, tweet.id, tweet.user.screen_name])
    #print "...%s tweets downloaded so far" % (len(tweet.id))
    ids.add(tweet.id) # add new id
    print ("number of unique ids seen so far: {}",format(len(ids)))
csvFile.close()

Error Message

答案

所以tweet是一个不是JSON或dict的对象,你不应该像tweet['retweeted']tweet['text']那样访问它

而是使用这一行:

if not tweet.retweeted:

或者对于您的用例:

if (not tweet.retweeted) and ('RT @' not in tweet.text):

在API级别过滤:

q='your_search -filter:retweets'

阅读更多关于这个here

另一答案

除了接受的答案,我建议您更改您的要求,从q="docker"q="docker -filter:retweets"

这将阻止大多数转推甚至出现在结果中。

以上是关于Tweepy - 排除转推的主要内容,如果未能解决你的问题,请参考以下文章

从 Tweepy 流中获取转推和最喜欢的计数

如何使用 Tweepy 转发评论

如何忽略已在 Tweepy 中转发的推文?

从 twitter 流中排除回复 - tweepy

在 Tweepy Streaming API 中包含过滤条件

从 tweepy 异常实例中获取错误代码