Попытка построить тепловую карту Twitter в Python
Я пытаюсь научить себя Python. Это может быть вопрос новичка. Эта тепловая карта является одним из проектов, которые я нашел и пытаюсь исправить, чтобы попытаться выучить.
Это код. Это один из трех сценариев, связанных с проектом. Я опубликую другие два, если необходимо. Я продолжаю получать TypeError: Не могу неявно преобразовать байты в строку из строки 156 (четвертая строка снизу). Я не получаю других ошибок.
Я запускаю его на Python 3. Я уже сделал несколько исправлений, чтобы обновить код... особенно в командах печати. (Я добавил скобки)
Любая помощь с ошибкой, которую я получаю, будет очень признательна.
import tweepy
from tweepy import Stream
from tweepy import OAuthHandler
from tweepy.streaming import StreamListener
import geopy
from geopy.geocoders import Nominatim
geolocator = Nominatim()
from textblob import TextBlob
#declare variables
ckey = 'x'
csecret = 'x'
atoken = 'x'
asecret = 'x'
OAUTH_KEYS = {'consumer_key':ckey, 'consumer_secret':csecret, 'access_token_key':atoken, 'access_token_secret':asecret}
auth = tweepy.OAuthHandler(OAUTH_KEYS['consumer_key'], OAUTH_KEYS['consumer_secret'])
api = tweepy.API(auth)
#open file
saveFile = open('file.csv', 'a')
headers = 'Time; User; Text; Sentiment; Question; Place; Latitude; Longitude;'
saveFile.write(headers + '\n')
#print tweets
for tweet in tweepy.Cursor(api.search, q ='#pittsburgh').items():
'''
Parameters (*required):
q*: word, hashtag of interest [#hashtag]
geocode: returns tweets by users located within a given radius of the given latitude/longitude [37.781157,-122.398720,1km]
lang: language [es]
result_type: [mixed, popular or recent]
count: [15-100]
until: YYYY-MM-DD, 7-day limit [2015-12-5]
since_id: returns results with an ID greater than (that is, more recent than) the specified ID [12345]
'''
if tweet.coordinates:
print("===========")
#date & time
moment = tweet.created_at
print('Date & Time: ', moment)
#text
string = tweet.text.replace('|', ' ')
string = tweet.text.replace('\n', ' ')
print('Text: ', string.encode('utf8'))
#user
user = tweet.author.name.encode('utf8')
print('User:', user)
#sentiment
text = TextBlob(string)
if text.sentiment.polarity < 0:
sentiment = "negative"
elif text.sentiment.polarity == 0:
sentiment = "neutral"
else:
sentiment = "positive"
print('Sentiment: ', sentiment)
#question
if '?' in string:
question = 'Yes'
else:
question = 'No'
print('Question: ', question)
#location
place = geolocator.reverse(str(tweet.coordinates))
print('Place: ', place)
latitude = tweet.coordinates[0]
longitude = tweet.coordinates[1]
print('Coords:', tweet.coordinates)
print("===========")
#save tweets
saveThis = str(moment) + '; ' + str(string.encode('ascii', 'ignore')) + '; ' + user + '; ' + sentiment + '; ' + question + '; ' + place + '; ' + str(latitude) + '; ' + str(longitude) + '; '
saveFile.write(saveThis + '\n')
if tweet.place:
print("===========")
#date & time
moment = tweet.created_at
print('Date & Time: ', moment)
#text
string = tweet.text.replace('|', ' ')
string = tweet.text.replace('\n', ' ')
print('Text: ', string.encode('utf8'))
#user
user = tweet.author.name.encode('utf8')
print('User: ', user)
#sentiment
text = TextBlob(string)
if text.sentiment.polarity < 0:
sentiment = "negative"
elif text.sentiment.polarity == 0:
sentiment = "neutral"
else:
sentiment = "positive"
print('Sentiment: ', sentiment)
#question
if '?' in string:
question = 'Yes'
else:
question = 'No'
print('Question: ', question)
#location
place = tweet.place.full_name
print('Place:', place)
location = geolocator.geocode(place)
latitude = location.latitude
longitude = location.longitude
print('Coords: ', location.latitude, location.longitude)
print("===========")
#save tweets
saveThis = str(moment) + '; ' + str(string.encode('ascii', 'ignore')) + '; ' + user + '; ' + sentiment + '; ' + question + '; ' + place + '; ' + str(latitude) + '; ' + str(longitude) + '; '
saveFile.write(saveThis + '\n')
else:
print("===========")
#date & time
moment = tweet.created_at
print('Date & Time', moment)
#text
string = tweet.text.replace('|', ' ')
string = tweet.text.replace('\n', ' ')
print('Text:', string.encode('utf8'))
#user
user = tweet.author.name.encode('utf8')
print('User:', user)
#sentiment
text = TextBlob(string)
if text.sentiment.polarity < 0:
sentiment = "negative"
elif text.sentiment.polarity == 0:
sentiment = "neutral"
else:
sentiment = "positive"
print('Sentiment:', sentiment)
#question
if '?' in string:
question = 'Yes'
else:
question = 'No'
print('Question:', question)
#location
place = ''
latitude = ''
longitude = ''
print('Place:', place)
print('Coords:', latitude, longitude)
print("===========")
#save tweets
saveThis = str(moment) + '; ' + str(string.encode('ascii', 'ignore')) + '; ' + user + '; ' + sentiment + '; ' + question + '; ' + place + '; ' + str(latitude) + '; ' + str(longitude) + '; '
saveFile.write(saveThis + '\n')
#close file
saveFile.close()