在从10个公司的twitter处获取数据时出现了问题,我正在从每个公司的twitter处获取1万条记录并对此进行情感分析,但是在获取记录时卡住了,然后停止了!我是获取数据以执行情感分析并创建单独的文件,然后合并到一个文件中,但是在为第一家公司本身获取数据时,代码被卡住了
import tweepy
from textblob import TextBlob
import pandas as pd
Access_token="`access token here`"
Access_token_secret="`access token secret here`"
Consumer_key="`consumer key here`"
Consumer_secret_key="`consumer secret key here`"
auth=tweepy.OAuthHandler(Consumer_key,Consumer_secret_key)
auth.set_access_token(Access_token,Access_token_secret)
api=tweepy.API(auth)
search_list = ['company names here in a list']
for n in search_list:
positive_tweet = []
negative_tweet = []
neutral_tweet = []
Final_list = []
new_list = []
tweets = tweepy.Cursor(api.search, q=str(n) + '-filter:retweets', lang='en', since='2018-01-01').items(10000)
for tweet in tweets:
print(tweet.text)
analysis = TextBlob(tweet.text)
if (analysis.sentiment.polarity) > 0:
positive_tweet.append(analysis.sentiment.polarity)
elif analysis.sentiment.polarity < 0:
negative_tweet.append(analysis.sentiment.polarity)
elif analysis.sentiment.polarity == 0:
neutral_tweet.append(analysis.sentiment.polarity)
else:
print('Emotionless & No Opinion regarding tweet')
total = len(positive_tweet) + len(negative_tweet) + len(neutral_tweet)
percentage_of_postive_review = float(len(positive_tweet) / (total) * 100)
new_list.append(n)
new_list.append(percentage_of_postive_review)
# print(new_list)
if new_list != []:
label = ['Company Name', 'Review']
i = 0
j = 2
while i < j and j <= len(new_list):
Final_list.append(new_list[i:j])
i = i + 2
j = j + 2
df = pd.DataFrame.from_records(Final_list, columns=label)
# print(df)
df.to_csv('D:/Review_Rating/Company Review' + str(n) + '.csv', index=False)
答案 0 :(得分:0)
您的代码正在生成此错误消息:
tweepy.error.TweepError: Twitter error response: status code = 429
此错误消息与“ 太多请求。”
有关用尽速率限制后将引发此错误。有关速率限制的详细信息,请参见下面的Twitter参考。
更改此行代码:
api=tweepy.API(auth)
至:
api= tweepy.API(auth, wait_on_rate_limit=True)
我还更改了以下代码行:
tweets = tweepy.Cursor(api.search,
q=str(n) + '-filter:retweets',
lang='en',
since='2018-01-01').items(10000)
对此:
# note the count, which helped increase performance.
tweets = tweepy.Cursor(api.search,
q=str(n) + '-filter:retweets',
count=100,
since='2018-01-01',
lang="en").items(500)
您需要调整search_list中的10个关键字。我在Twitter上测试了这些结果,结果有误报。
当我将项目限制设置为500时,仍然不每个search_list中列出的公司名称获得500条推文。一个公司名称仅产生207个结果。
我建议对每家公司进行测试,以确定可以收获多少条推文。
您的代码未将收集的推文写入文件。我建议将推文写入文件名-company_name_MMDDYYYY.txt。这样一来,您无需重复收集推文就可以执行二级处理。
我会将所有情感分析数据元素写入单个CSV文件。
总体而言,经过这两次修改后,原始代码的运行速度更快,但最终仍需要进行更多调整。愉快的编码...