Tweepy - 排除转推
Tweepy - Exclude Retweets
最终目标是使用 tweepy api 搜索来关注主题(即 docker)并排除转推。我看过其他提到排除转推的帖子,但它们完全适用。我试图将我学到的知识融入到下面的代码中,但我认为 "if not" 代码放在了错误的位置。任何帮助是极大的赞赏。
#!/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()
过滤 API 级别:
q='your_search -filter:retweets'
阅读更多相关内容 here。
愚蠢的方法是在代码中过滤
所以 tweet
是一个对象而不是 JSON 或字典,你不应该像 tweet['retweeted']
和 tweet['text']
那样访问它
改为使用这一行:
if not tweet.retweeted:
或您的用例:
if (not tweet.retweeted) and ('RT @' not in tweet.text):
除了已接受的答案外,我建议您更改您提出的请求,从 q="docker"
到 q="docker -filter:retweets"
这将阻止大多数转推甚至出现在结果中。
最终目标是使用 tweepy api 搜索来关注主题(即 docker)并排除转推。我看过其他提到排除转推的帖子,但它们完全适用。我试图将我学到的知识融入到下面的代码中,但我认为 "if not" 代码放在了错误的位置。任何帮助是极大的赞赏。
#!/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()
过滤 API 级别:
q='your_search -filter:retweets'
阅读更多相关内容 here。
愚蠢的方法是在代码中过滤
所以 tweet
是一个对象而不是 JSON 或字典,你不应该像 tweet['retweeted']
和 tweet['text']
改为使用这一行:
if not tweet.retweeted:
或您的用例:
if (not tweet.retweeted) and ('RT @' not in tweet.text):
除了已接受的答案外,我建议您更改您提出的请求,从 q="docker"
到 q="docker -filter:retweets"
这将阻止大多数转推甚至出现在结果中。