Con un account sviluppatore di Twitter si possono effettuare query sul DB Twitter
Vi sono limitazioni temporrali (non si puo' andare piu' indietro di una settimana con l'account base) e si possono richiedere da 10 a 100 risultati (questa limitazione si supera utilizzando il valore di next_token contenuto nel risultato della query che permette di effettuare una ulteriori query sui risultati successivi)
import requests
import json
import re
import random
BEARER_TOKEN = "AAAAAAAAAAAAAAAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
def write_2_file(stringa):
textfile = open(str(random.randrange(1,10000000000))+".txt", "w")
textfile.write(stringa)
textfile.close()
def search_twitter(query, tweet_fields, max_results,next_token, bearer_token = BEARER_TOKEN):
headers = {"Authorization": "Bearer {}".format(bearer_token)}
if len(next_token)>13:
url = "https://api.twitter.com/2/tweets/search/recent?query={}&{}&{}&{}".format(query, tweet_fields,max_results,next_token)
else:
url = "https://api.twitter.com/2/tweets/search/recent?query={}&{}&{}".format(query, tweet_fields,max_results)
response = requests.request("GET", url, headers=headers)
if response.status_code != 200:
raise Exception(response.status_code, response.text)
return response.json()
nr = 100 #numero risultati per query
query = "frana"
tweet_fields = "tweet.fields=text"
max_results = "max_results="+str(nr) #valori compresi tra 10 e 500
start_time = "" # si possono inserire intervalli temporali negli ultimi 7 giorni
end_time = "" # formato YYYY-MM-DDTHH:mm:ssZ (ISO 8601/RFC 3339)
next_token = ""
json_response = search_twitter(query=query, tweet_fields=tweet_fields, max_results=max_results, next_token=next_token, bearer_token=BEARER_TOKEN)
for t in range(nr):
print(re.sub('[^A-Za-z0-9 ]+', '', json_response['data'][t]['text']))
write_2_file(re.sub('[^A-Za-z0-9 ]+', '', json_response['data'][t]['text']))
for i in range(50):
next_token = "next_token="+json_response['meta']['next_token']
json_response = search_twitter(query=query, tweet_fields=tweet_fields, max_results=max_results, next_token=next_token, bearer_token=BEARER_TOKEN)
for t in range(nr):
print(re.sub('[^A-Za-z0-9 ]+', '', json_response['data'][t]['text']))
write_2_file(re.sub('[^A-Za-z0-9 ]+', '', json_response['data'][t]['text']))
Nessun commento:
Posta un commento