2014-06-13 7 views
26

Ho cercato di capirlo, ma questo è davvero frustrante. Sto cercando di ottenere tweet con un certo hashtag (una grande quantità di tweet) usando Tweepy. Ma questo non torna più di una settimana. Devo tornare indietro di almeno due anni per un periodo di un paio di mesi. E 'anche possibile, se sì, come?Come posso ottenere tweets più vecchi di una settimana (usando tweepy o altre librerie python)

Solo per il controllo Ecco il mio codice

import tweepy 
import csv 

consumer_key = '####' 
consumer_secret = '####' 
access_token = '####' 
access_token_secret = '####' 

auth = tweepy.OAuthHandler(consumer_key, consumer_secret) 
auth.set_access_token(access_token, access_token_secret) 
api = tweepy.API(auth) 

# Open/Create a file to append data 
csvFile = open('tweets.csv', 'a') 
#Use csv Writer 
csvWriter = csv.writer(csvFile) 


for tweet in tweepy.Cursor(api.search,q="#ps4",count=100,\ 
          lang="en",\ 
          since_id=2014-06-12).items(): 
    print tweet.created_at, tweet.text 
    csvWriter.writerow([tweet.created_at, tweet.text.encode('utf-8')]) 
+5

Si noti che 'since_id = 2014-06-12' è equivalente a' since_id = 1996', perché 2.014 meno 6 meno 12 uguale 1996. –

+0

Eventuali duplicati di [ Ottenere dati storici da Twitter] (https: // StackOverflow.it/questions/1662151/getting-historical-data-from-twitter) – Nemo

risposta

1

utilizzare i args "dal" e "fino a quando" per regolare il periodo di tempo. Si sta attualmente utilizzando since_id che è destinata a corrispondere ai valori di ID di Twitter (non date):

for tweet in tweepy.Cursor(api.search, 
          q="test", 
          since="2014-01-01", 
          until="2014-02-01", 
          lang="en").items(): 
+3

sì, l'ho provato, ma non è possibile, se la data è più vecchia di una settimana l'output è solo nulla. Quindi devo usare un metodo diverso da quello di ricerca, ma non trovo nessun altro che funzioni – MustiHakan

18

Non è possibile utilizzare l'API di Twitter di ricerca per raccogliere i tweet di due anni fa. Per i documenti:

Si noti inoltre che i risultati della ricerca su twitter.com possono restituire risultati storici mentre l'API di ricerca in genere serve solo i tweet della settimana passata. - Twitter documentation.

Se avete bisogno di un modo per ottenere vecchi tweets, è possibile ottenere da singoli utenti, perché la raccolta di tweet da loro è limitato dal numero piuttosto che il tempo (così in molti casi si può tornare indietro mesi o anni). Un servizio di terze parti che raccoglie tweet come Topsy potrebbe essere utile anche nel tuo caso (chiuso a luglio 2016, ma esistono altri servizi).

+1

Twitter apre tutti i vecchi tweet a novembre 2014: http://www.theverge.com/2014/11/18/7242477/twitter- search-now-lets-you-find-any-tweet-mai-inviato –

+1

Questo è il loro motore di ricerca *, è vero anche per le API? – Luigi

+6

@Luigi non al momento. L'ho appena testato oggi :( – rahulserver

18

Come hai notato l'API di Twitter ha alcune limitazioni, ho implementato un codice che fa ciò usando la stessa strategia di Twitter che gira su un browser. Date un'occhiata, è possibile ottenere i tweet più antichi: https://github.com/Jefferson-Henrique/GetOldTweets-python

+0

funziona ancora? Quando provo con --since e fino a quando non mi dà 0 tweet? –

+2

Non ha funzionato per me su Vanilla Ubuntu 12.04, quindi, ho dovuto installare pyquery e lxml prima Se qualcuno incontra lo stesso problema, si prega di fare apt-get install python-pip; pip installa pyquery; apt-get install python-lxml; quindi lo script funzionerà.;) – rsharpy

+0

Per tutti gli utenti ancora in difficoltà, è necessario averli 2 librerie installate pure: sudo apt-get install libxslt-dev libxml2-dev –

7

Trovato un codice che avrebbe aiutato recuperare i tweet più vecchi. https://github.com/Jefferson-Henrique/GetOldTweets-python

Per ottenere vecchi tweet, eseguire il seguente comando nella directory in cui è stato estratto il repository di codice.

python Exporter.py --querysearch 'keyword' --since 2016-01-10 --until 2016-01-15 --maxtweets 1000 

Ed è restituito un file 'output_got.csv' con 1000 tweet durante i giorni di cui sopra con la parola chiave

è necessario installare un modulo di 'pyquery' per questo al lavoro

PS: È possibile modificare il file di codice Python "Exporter.py" per ottenere più attributi tweet secondo le proprie esigenze.

+0

Ho provato a cercare tweets per una durata di un mese nel 2015 con maxtweets 10000. Ma può arrivare solo a 200. Sembra che la data più vecchia sia è, il minor numero di dati che può ottenere. –

1

Come altri hanno notato, l'API di Twitter ha il limite di date, ma non la ricerca avanzata effettiva implementata su twitter.com. Quindi la soluzione è usare il wrapper Python per Selenium o PhantomJS per scorrere l'endpoint twitter.com. Ecco un'implementazione utilizzando selenio che qualcuno ha postato su Github: https://github.com/bpb27/twitter_scraping/