收集Twitter数据时添加情感分析循环

时间:2019-03-02 11:44:35

标签: python for-loop twitter

我目前正在尝试将情绪分析循环添加到收集推文的python脚本中。当我不带循环运行脚本时,它可以正常生成推文。但是,每当我添加for循环时(从“返回的推文中的for推文开始”,该推文就不再生成,并且我创建的csv也不会出现。我想知道这是否与我将脚本内的for循环,或者循环本身有错误,将非常感谢您的帮助!

sentiments=[]
sentiment_means=[]
# Create URL Structure
class RequestWithMethod(urllib.request.Request):
    def __init__(self, base_url, method, headers={}):
        self._method = method
        urllib.request.Request.__init__(self, base_url, headers)
    def get_method(self):
        if self._method:
            return self._method
        else:
            return urllib.request.Request.get_method(self)

#Create Endpoint & Add Credentials
def create_rules_endpoint(query):
        new_url = base_url + query
        base64string = ('%s:%s' % (UN, PWD)).replace('\n', '')
        base = base64.b64encode(base64string.encode('ascii'))
        final_final_url = urllib.request.Request(new_url)
        final_final_url.add_header('Authorization', 'Basic %s' % base.decode('ascii'))
        return final_final_url

# Take in the Endpoint and Make the Request
def make_request(search_endpoint):
    try:
        response = urllib.request.urlopen(search_endpoint)
        response_data = response.read()
        handle_response(response_data)
    except urllib.request.HTTPError as error:
        print("ERROR: %s" % error)

# Handle the Returned Data
def handle_response(data):
    tweets_returned = json.loads(data.decode('utf-8'))
    print(tweets_returned)
**for tweet in tweets_returned['results']:
    counter=1
    compound_list=[]
    positive_list = []
    negative_list = []
    neutral_list = []
    geo_list = []
    compound = analyzer.polarity_scores(tweet["text"])["compound"]
    pos = analyzer.polarity_scores(tweet["text"])["pos"]
    neu = analyzer.polarity_scores(tweet["text"])["neu"]
    neg = analyzer.polarity_scores(tweet["text"])["neg"]
    compound_list.append(compound)
    positive_list.append(pos)
    negative_list.append(neg)
    neutral_list.append(neu)
    sentiments.append({"Location": tweet["geo"],
                           "Date": tweet["created_at"],
                           "Tweet": tweet["text"],
                           "Compound": compound,
                           "Positive": pos,
                           "Neutral": neu,
                           "Negative": neg,
                           "Tweets_Ago": counter
                            })    
    counter+=1
sentiment_means.append({
    "Compound_Mean": np.mean(compound_list),
    "Positive": np.mean(positive_list),
    "Neutral": np.mean(negative_list),
    "Negative": np.mean(neutral_list),
    "Count": len(compound_list)
                    })**

# Create the Endpoint Variable w/ Sample Query Keyword
search_endpoint = create_rules_endpoint('Wilson%20Rackets%20has%3Ageo%20lang%3Aen')

# Make the Request by Passing in Search Endpoint

make_request(search_endpoint)


 # Convert all_sentiments to DataFrame
all_sentiments_pd = pd.DataFrame.from_dict(sentiments)
all_sentiments_pd.to_csv("sentiments_array_pd.csv")
display(all_sentiments_pd)
#print(all_sentiments_pd.dtypes)

# Convert sentiment_means to DataFrame 
sentiment_means_pd = pd.DataFrame.from_dict(sentiment_means) 
display(sentiment_means_pd)

0 个答案:

没有答案