import tweepy
import csv
import json
import datetime
import pandas as pd
import re
from tweepy import OAuthHandler
from textblob import TextBlob
class TwitterClient(object):
def __init__(self):
consumer_key = 'blah'
consumer_secret = 'blah'
access_token = 'blah'
access_token_secret = 'blah'
# attempt authentication
try:
# create OAuthHandler object
self.auth = OAuthHandler(consumer_key, consumer_secret)
# set access token and secret
self.auth.set_access_token(access_token, access_token_secret)
# create tweepy API object to fetch tweets
self.api = tweepy.API(self.auth)
except:
print("Error: Authentication Failed")
def clean_tweet(self, tweet):
'''
Utility function to clean tweet text by removing links, special characters
using simple regex statements.
'''
return ' '.join(re.sub("(@[A-Za-z0-9]+)|([^0-9A-Za-z \t])|(\w+:\/\/\S+)", " ", tweet).split())
def get_tweet_sentiment(self, tweet):
'''
Utility function to classify sentiment of passed tweet
using textblob's sentiment method
'''
# create TextBlob object of passed tweet text
analysis = TextBlob(self.clean_tweet(tweet))
# set sentiment
if analysis.sentiment.polarity > 0:
return 'positive'
elif analysis.sentiment.polarity == 0:
return 'neutral'
else:
return 'negative'
def get_tweets(self, query, count=10):
'''
Main function to fetch tweets and parse them.
'''
# empty list to store parsed tweets
tweets = []
try:
# call twitter api to fetch tweets
fetched_tweets = self.api.search(q=query, count=count)
# parsing tweets one by one
for tweet in fetched_tweets:
# empty dictionary to store required params of a tweet
parsed_tweet = {}
# saving text of tweet
parsed_tweet['text'] = tweet.text
# saving sentiment of tweet
parsed_tweet['sentiment'] = self.get_tweet_sentiment(tweet.text)
# appending parsed tweet to tweets list
if tweet.retweet_count > 0:
# if tweet has retweets, ensure that it is appended only once
if parsed_tweet not in tweets:
tweets.append(parsed_tweet)
else:
tweets.append(parsed_tweet)
# return parsed tweets
return tweets
except tweepy.TweepError as e:
# print error (if any)
print("Error : " + str(e))
def main():
# creating object of TwitterClient Class
api = TwitterClient()
# calling function to get tweets
print("fetching started........")
tweets = api.get_tweets(query='Imran Khan', count=200)
csvFile = open('Twitter' + (datetime.datetime.today().strftime('%d%m%Y%H%M')) + '.json', 'a')
# picking positive tweets from tweets
ptweets = [tweet for tweet in tweets if tweet['sentiment'] == 'positive']
# percentage of positive tweets
csvFile.write(json.dumps("Positive tweets percentage: {} %".format(100 * len(ptweets) / len(tweets))))
# picking negative tweets from tweets
ntweets = [tweet for tweet in tweets if tweet['sentiment'] == 'negative']
csvFile.write(json.dumps("Negative tweets percentage: {} %".format(100 * len(ntweets) / len(tweets))))
csvFile.write(json.dumps("Neutral tweets percentage: {} % \ "
"".format(100 * (len(tweets) - len(ntweets) - len(ptweets)) / len(tweets))))
csvFile.write(json.dumps(tweets._json))
csvFile.write("\n")
csvFile.close()
print("fetching end........")
if __name__ == "__main__":
# calling main function
main()
Процесс завершен с кодом выхода 0, эта программа работает без ошибок, но не выдает никаких результатов и дает 0 ответа.На самом деле я хочу сохранить все твиты в файле json для дальнейшего анализа, и я хочу, чтобы анализ настроений также сохранялся в файле json.Программа всегда завершается с кодом выхода 0, но ответов нет вообще. Я перепробовал все, что знаю, но не повезло.Пожалуйста, помогите !!!