Écrivez un script pour rechercher sur Twitter à l'aide de Python. Le livrable final peut être téléchargé ci-dessous.
https://github.com/mima3/searchTwitter
(1) Python 2.7 doit être installé. (2) Installez python_twitter
easy_install python_twitter
(3) Obtenez l'API pour Twitter à partir de la page suivante https://dev.twitter.com/
Veuillez vous référer à la page suivante pour la méthode d'acquisition détaillée. http://support.dreamone.co.jp/Pandora/dp.do?jumpTo=DreamX&variables%28LPID%29=162
application/rate_limit_status.json https://dev.twitter.com/docs/api/1.1/get/application/rate_limit_status Obtenez les limites de chaque API. Cela vous permet de savoir combien de fois chaque API peut être utilisée plus tard et quand l'heure de réinitialisation sera.
search/tweets.json https://dev.twitter.com/docs/api/1.1/get/search/tweets API pour la recherche.
Le nombre maximum pouvant être acquis avec une API est de 100. Les recherches via l'API peuvent différer des recherches de la page officielle. Officiellement, les tweets d'il y a 7 jours sont également recherchés, mais dans le cas de l'API, les tweets passés ne sont pas recherchés.
De plus, les tweets obtenus par recherche sont différents en fonction du result_type. Obtenir des informations récentes par ordre chronologique populaire obtient des tweets populaires mélangé est un mélange de ce qui précède.
Les caractères qui peuvent être spécifiés dans l'API de recherche peuvent être les caractères de recherche utilisés dans la "recherche avancée". https://twitter.com/search-advanced
(Erin OU Eirin) AND (BBA OU Tante OU Baba)
Recherchez ce qui est tweeté comme "Erin" ou "Eirin" et "BBA" ou "Auntie" ou "Babaa".
Entrez le nom d'utilisateur après "de:".
from:mima_ita
La recherche à partir de semble être limitée à 100 dans l'API.
Spécifiez les coordonnées et la plage après "geocode:". L'exemple suivant est un tweet obtenu de la tour de Tokyo avec un rayon de 500 m.
geocode:35.65858,139.745433,0.5km
L'API semble avoir une limite de 100 recherches utilisant le géocode.
Ici, un exemple d'implémentation d'un processus de recherche d'un caractère de recherche spécifié est montré. À l'origine, seuls 100 éléments peuvent être obtenus avec une seule API de recherche, alors modifiez-la pour obtenir la limite totale.
Tout d'abord, recherchez la première API de recherche avec "result_type = recent" et récupérez-la dans l'ordre chronologique. À l'heure actuelle, seuls les 100 derniers cas ont été acquis.
Dans la deuxième recherche, essayez d'obtenir les tweets les plus anciens obtenus lors de la première recherche. Pour ce faire, spécifiez "max_id = précédent minimum id-1".
Vous pouvez répéter cela jusqu'à ce que vous ne puissiez pas tous les obtenir, ou vous pouvez répéter jusqu'à ce que vous dépassiez la limite d'API obtenue par rate_limit_status.
Un exemple simple de ceci est montré ci-dessous.
#!/usr/bin/python
# -*- coding: utf-8 -*-
# python_twitter 1.1
import twitter
from twitter import Api
import sys
import time
reload(sys)
sys.setdefaultencoding('utf-8')
from collections import defaultdict
maxcount=1000
maxid =0
terms=["Rin Yainaga","Eirin","Erin"]
search_str=" OR ".join(terms)
api = Api(base_url="https://api.twitter.com/1.1",
consumer_key='XXXXX',
consumer_secret='XXXXX',
access_token_key='XXXXX',
access_token_secret='XXXXX')
rate = api.GetRateLimitStatus()
print "Limit %d / %d" % (rate['resources']['search']['/search/tweets']['remaining'],rate['resources']['search']['/search/tweets']['limit'])
tm = time.localtime(rate['resources']['search']['/search/tweets']['reset'])
print "Reset Time %d:%d" % (tm.tm_hour , tm.tm_min)
print "-----------------------------------------\n"
found = api.GetSearch(term=search_str,count=100,result_type='recent')
i = 0
while True:
for f in found:
if maxid > f.id or maxid == 0:
maxid = f.id
print f.text
i = i + 1
if len(found) == 0:
break
if maxcount <= i:
break
print maxid
found = api.GetSearch(term=search_str,count=100,result_type='recent',max_id=maxid-1)
print "-----------------------------------------\n"
rate = api.GetRateLimitStatus()
print "Limit %d / %d" % (rate['resources']['search']['/search/tweets']['remaining'],rate['resources']['search']['/search/tweets']['limit'])
tm = time.localtime(rate['resources']['search']['/search/tweets']['reset'])
print "Reset Time %d:%d" % (tm.tm_hour , tm.tm_min)
Vous pouvez télécharger le script qui a évolué à partir de ce qui précède à partir de ce qui suit. https://github.com/mima3/searchTwitter
Le script ci-dessus stocke les résultats de la recherche dans SQLITE. Ce script recherche les tweets passés dans la limite des restrictions d'appel d'API. Lors de la prochaine exécution du script, ce sera comme suit.
__ Si vous avez recherché tous les tweets précédents pouvant être recherchés __ Recherchez les tweets plus récents que les tweets enregistrés dans la base de données.
__ Si les tweets précédents restent __ Recherchez des tweets plus anciens que le tweet précédemment acquis.
Avec ce script, un grand nombre de résultats de recherche peuvent être facilement obtenus.