为什么在使用Tweepy下载用户时间线时收到错误消息

2024-09-27 16:19:26 发布

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

我正在写我的经济学论文,我正试图在两次约会之间收集推特,以获得一个用户列表。不幸的是,我的程序对单个用户运行良好,当我尝试为影响者的追随者循环它时,它会中断并抛出此错误。有人有什么建议吗

而且,一旦我得到修复,我将需要在两个日期之间进行排序(我只是打算下载大量数据,然后使用SPSS进行排序,但肯定有更好的方法)。有人知道怎么做吗?我试过:tweepy get tweets between two dates 但它不起作用,给了我超不规则的结果。此外,如果有人知道如何制定这一非旅行费率限制,那将是一件好事,因为我认为这将是下一个问题。:)

对不起,如果代码有点乱,这是我第一次编码

错误(我在spyder工作,所以有点长):

回溯(最近一次呼叫最后一次):

文件“C:\Users\XPS.ipython\OG+从SCRACH.py构建”,第91行,在 提取追随者(用户)

文件“C:\Users\XPS.ipython\OG+从SCRACH.py构建”,第66行,摘录\u posts=api.user\u时间线(screen\u name=user,count=100,language=“en”,tweet\u mode=“extended”,include\u rts=True)

文件“C:\Users\XPS\Python\lib\site packages\tweepy\binder.py”,第252行,在调用中 返回方法execute()

文件“C:\Users\XPS\Python\lib\site packages\tweepy\binder.py”,第238行,在execute中 result=self.parser.parse(self,resp.text,return\u cursors=self.return\u cursors)

文件“C:\Users\XPS\Python\lib\site packages\tweepy\parsers.py”,第98行,在parse中 结果=model.parse_列表(method.api,json)

文件“C:\Users\XPS\Python\lib\site packages\tweepy\models.py”,第75行,在parse\u列表中 results.append(cls.parse(api,obj))

文件“C:\Users\XPS\Python\lib\site packages\tweepy\models.py”,第89行,在parse中 用于json.items()中的k,v:属性错误:“str”对象没有属性“items”

我的代码

导入库

import tweepy
from textblob import TextBlob 
import pandas as pd
import re
import matplotlib.pyplot as plt
import csv


plt.style.use('fivethirtyeight')

Twitter API凭据

consumerkey =  ('a')
consumersecret = ('a')
bearer = ('a')
token = ('a')
tokensecret = ('a')

创建身份验证对象

authenticate = tweepy.OAuthHandler(consumerkey, consumersecret)

#设置访问令牌

authenticate.set_access_token(token, tokensecret)

#在传递身份验证信息时创建API对象

api = tweepy.API(authenticate, wait_on_rate_limit= True, wait_on_rate_limit_notify=True)

创建一个清除推文的函数

def cleanTxt(text):
 text = re.sub('@[A-Za-z0–9]+', '', text) #Removing @mentions
 text = re.sub('#', '', text) # Removing '#' hash tag
 text = re.sub('RT[\s]+', '', text) # Removing RT
 text = re.sub('https?:\/\/\S+', '', text) # Removing hyperlink
 text = re.sub('https?:\/\/\S+', '', text) # Removing hyperlink

 return text

创建一个函数来获得主观性

def getSubjectivity(text):
   return TextBlob(text).sentiment.subjectivity

创建一个函数来获取极性(txt的正负值)

def getPolarity(text):
   return  TextBlob(text).sentiment.polarity

#追随者名单

name_list = ['_prashantnair','urxnlc', 'Gurmeet1018', 'arpit8691yahooc', 'bnirmaljain', 'anoldschoolboy', 'rrpatange']

在某些版本中,我只称之为excel——每个影响者的完整列表只有几千个

创建函数,从影响者那里提取100条带有日期的推文

def extract_followers (user):
    results = []
    posts = api.user_timeline(screen_name = user, count = 100, language = "en", tweet_mode="extended", include_rts = True)
    for tweet in posts:
            data = (
            tweet.full_text,
            tweet.created_at,
            tweet.user.screen_name)
            results.append(data)
        
        
    cols = "Tweets Date screen_name".split()
    global df
    df = pd.DataFrame(results, columns=cols)
    
    print("df original")
    print (df)
    
    for tweet in posts:
            cleaned_text = cleanTxt(tweet.full_text)
            with open('influencer.csv', 'a', newline= '') as f:    
                worksheet = csv.writer(f)
                worksheet.writerow([str(tweet.user.screen_name), str(tweet.created_at), str(getSubjectivity(cleaned_text)), str(getPolarity(cleaned_text))]) 
                print("Tweet Added")

调用提取tweets函数

for user in name_list: 
    extract_followers(user)

清理推文

df['Tweets'] = df['Tweets'].apply(cleanTxt)

显示已清理的推文

print('df cleaned')
print (df)

创建两个新列“主观性”&;'极性'

df['Subjectivity'] = df['Tweets'].apply(getSubjectivity)
df['Polarity'] = df['Tweets'].apply(getPolarity)

显示列为“主观性”的新数据框(&;)极性'

print ("df with subjectivity")
print (df)

热门问题