Schreiben Sie ein Skript, um Twitter mit Python zu durchsuchen. Das endgültige Ergebnis kann unten heruntergeladen werden.
https://github.com/mima3/searchTwitter
(1) Python 2.7 muss installiert sein. (2) Installieren Sie python_twitter
easy_install python_twitter
(3) Holen Sie sich die API für Twitter von der folgenden Seite https://dev.twitter.com/
Auf der folgenden Seite finden Sie die detaillierte Erfassungsmethode. 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 Holen Sie sich die Grenzen für jede API. Auf diese Weise können Sie herausfinden, wie oft jede API später verwendet werden kann und wann die Rücksetzzeit sein wird.
search/tweets.json https://dev.twitter.com/docs/api/1.1/get/search/tweets API für die Suche.
Die maximale Anzahl, die mit einer API erfasst werden kann, beträgt 100. Die Suche über die API kann von der Suche auf der offiziellen Seite abweichen. Offiziell werden auch Tweets von vor 7 Tagen durchsucht, aber im Fall von API werden frühere Tweets nicht durchsucht.
Außerdem unterscheiden sich die durch die Suche erhaltenen Tweets je nach Ergebnistyp. Erhalten Sie aktuelle in chronologischer Reihenfolge beliebt bekommt beliebte Tweets gemischt ist eine Mischung der oben genannten.
Die Zeichen, die in der Such-API angegeben werden können, können die Suchzeichen sein, die in der "erweiterten Suche" verwendet werden. https://twitter.com/search-advanced
(Erin ODER Eirin) AND (BBA ODER Tante ODER Baba)
Suchen Sie nach "Erin" oder "Eirin" und "BBA" oder "Tante" oder "Babaa".
Geben Sie den Benutzernamen nach "von:" ein.
from:mima_ita
Die Suche mit from scheint in der API auf 100 beschränkt zu sein.
Geben Sie die Koordinaten und den Bereich nach "Geocode:" an. Das folgende Beispiel ist ein Tweet aus dem Tokyo Tower mit einem Radius von 500 m.
geocode:35.65858,139.745433,0.5km
Die API scheint ein Limit von 100 Suchvorgängen mit Geocode zu haben.
Hier wird ein Implementierungsbeispiel eines Prozesses zum Suchen eines bestimmten Suchzeichens gezeigt. Ursprünglich können mit einer Such-API nur 100 Elemente abgerufen werden. Ändern Sie diese Option, damit Sie das volle Limit erhalten.
Suchen Sie zuerst die erste Such-API mit "result_type = Recent" und rufen Sie sie in chronologischer Reihenfolge ab. Derzeit werden nur die letzten 100 Fälle erfasst.
Versuchen Sie bei der zweiten Suche, die ältesten Tweets zu erhalten, die bei der ersten Suche erhalten wurden. Geben Sie dazu "max_id = vorherige minimale ID-1" an.
Sie können dies wiederholen, bis Sie nicht alle erhalten können, oder Sie können es wiederholen, bis Sie das durch rate_limit_status erhaltene API-Limit überschreiten.
Ein einfaches Beispiel hierfür ist unten gezeigt.
#!/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)
Sie können das Skript, das sich aus dem oben Gesagten entwickelt hat, wie folgt herunterladen. https://github.com/mima3/searchTwitter
Das obige Skript speichert die Suchergebnisse in SQLITE. Dieses Skript durchsucht vergangene Tweets bis zur Grenze der API-Aufrufbeschränkungen. Wenn das Skript als nächstes ausgeführt wird, sieht es wie folgt aus.
__ Wenn Sie alle durchsuchbaren vergangenen Tweets durchsucht haben __ Suchen Sie nach Tweets, die neuer sind als die in der Datenbank registrierten Tweets.
__ Wenn vergangene Tweets bleiben __ Suchen Sie nach Tweets, die älter sind als der zuvor erworbene Tweet.
Mit diesem Skript kann eine große Anzahl von Suchergebnissen leicht erhalten werden.
Recommended Posts