获取twi上用户的关注者总数时出现意外结果

2024-03-28 14:08:22 发布

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

当我运行它时,终端不断地将“23851”绑定到新行中,这是我的文件f中第一个Twitter名称的关注者数量;我相信这意味着指针没有在文件f中移动,但我不确定在Python中应该如何正确地执行此操作2)当我检查我的文件f1时,什么都没有,i、 e.程序未按预期写入f1。你知道吗

import tweepy
from tweepy import Stream
from tweepy.streaming import StreamListener
from tweepy import OAuthHandler
CONSUMER_KEY = 'xxx'
CONSUMER_SECRET = 'xxx'
ACCESS_KEY = 'xxx'
ACCESS_SECRET = 'xxx'
auth = OAuthHandler(CONSUMER_KEY,CONSUMER_SECRET)
api = tweepy.API(auth)
auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)

#Create Class First
class TweetListener(StreamListener):
# A listener handles tweets are the received from the stream.
#This is a basic listener that just prints received tweets to standard output
def on_data(self, data): # indented inside the class
    print(data)
    return True

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

# open both files outside the loop

with open('Twitternames.txt') as f,open('followers_number.txt', 'a') as f1:
    for x in f:   
        #search
        api = tweepy.API(auth)
        twitterStream = Stream(auth,TweetListener())
        test = api.lookup_users(screen_names=['x'])
    for user in test:
            print(user.followers_count)
            #print it out and also write it into a file
            s = user.followers_count
            f1.write(str(s) +"\n") # add a newline with +        
#end of stackoverflow        
f.close()

Tags: 文件thekeyfromimportauthapidata
1条回答
网友
1楼 · 发布于 2024-03-28 14:08:22

实际上,有一些事情需要考虑,也有一些不需要的线。所以我会逐行解释相关的事情,因为我们不需要任何流数据来计算跟随者的数量,所以我们只需要导入tweepy和OauthHandler,所以:

import tweepy
from tweepy import OAuthHandler

现在我们需要设置登录所需的4个键,因此,这将与:

CONSUMER_KEY = 'xxxxxxxx' #Replace with the original values.
CONSUMER_SECRET = 'xxx'   #Replace with the original values.
ACCESS_KEY = 'xxx'        #Replace with the original values.
ACCESS_SECRET = 'xxx'     #Replace with the original values.

auth = OAuthHandler(CONSUMER_KEY,CONSUMER_SECRET)
auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)
api = tweepy.API(auth)

我猜你不需要StreamListner只记录各种用户的数量。所以我跳过了这一部分,但是您可以在之后添加代码段。你知道吗

usernames_file = open('Twitternames.txt').readlines()

我假设Twitternames.txt的内容采用以下格式(每个用户名没有@符号,并用新行分隔):

user_name_1
user_name_2
user_name_3
...

现在用户名文件将是字符串列表usernames_file= ['user_name_1\n', 'user_name_2\n', 'user_name_3\n'],所以现在我们已经从文本文件中提取了各种用户名,但是我们需要去掉每个名称末尾的\n字符。所以我们可以使用.strip()方法。你知道吗

usernames = []
for i in usernames_file:
    usernames.append(i.strip())

>>> usernames = ['user_name_1', 'user_name_2', 'user_name_3']

现在我们可以使用lookup\u users方法了,因为这个方法将用户名列表作为输入。你知道吗

所以它可能看起来像这样:

test = api.lookup_users(screen_names=usernames)
for user in test:
    print(user.followers_count)

如果要将结果记录到.txt文件中,则可以使用:

log_file = open("log.txt", 'a')
test = api.lookup_users(screen_names=usernames)
for user in test:
    print(user.followers_count)
    log_file.write(user.name+" has "+str(user.followers_count)+" followers.\n")
log_file.close()

因此,简短的最终代码如下所示:

import tweepy
from tweepy import OAuthHandler

CONSUMER_KEY = 'xxx'
CONSUMER_SECRET = 'xxx'
ACCESS_KEY = 'xxx'
ACCESS_SECRET = 'xxx'

auth = OAuthHandler(CONSUMER_KEY,CONSUMER_SECRET)
auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)

api = tweepy.API(auth)

usernames_file = open('Twitternames.txt').readlines()

usernames = []
for i in usernames_file:
    usernames.append(i.strip())

log_file = open("log.txt", 'a')
test = api.lookup_users(screen_names=usernames)
for user in test:
    print(user.followers_count)
    log_file.write(user.name+" has "+str(user.followers_count)+" followers.\n")
log_file.close()

相关问题 更多 >