Suchen Sie Twitter mit Python

Zweck

Schreiben Sie ein Skript, um Twitter mit Python zu durchsuchen. Das endgültige Ergebnis kann unten heruntergeladen werden.

https://github.com/mima3/searchTwitter

Vorbereitung

(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

Twitter API zu verwenden

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.

Zeichen suchen

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

Suchbeispiel mit AND, OR

(Erin ODER Eirin) AND (BBA ODER Tante ODER Baba)

Suchen Sie nach "Erin" oder "Eirin" und "BBA" oder "Tante" oder "Babaa".

Ein Beispiel für die Suche nach dem, was ein bestimmter Benutzer getwittert hat

Geben Sie den Benutzernamen nach "von:" ein.

from:mima_ita

Die Suche mit from scheint in der API auf 100 beschränkt zu sein.

Ein Beispiel für die Suche nach einem Tweet an einem bestimmten Ort

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.

Implementierungsbeispiel

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)

Entwicklungssystem

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

Suchen Sie Twitter mit Python
Mit Python auf Twitter posten
Suchalgorithmus mit word2vec [Python]
Suche nach Twitter-Tweets mit Python
Suche nach Tiefenpriorität mit Stack in Python
Twitter mit Python3
Starten Sie Python
Scraping mit Python
Tweet mit der Twitter-API in Python
Python: Negative / Positive Analyse: Twitter Negative / Positive Analyse mit RNN-Teil 1
[Python] LINE-Benachrichtigung über die neuesten Informationen mithilfe der automatischen Suche von Twitter
Sequentielle Suche mit Python
Fibonacci-Sequenz mit Python
[Python] Suche (itertools) ABC167C
Dichotomie mit Python
Datenbereinigung mit Python
[Python] Suche (NumPy) ABC165C
Memo zur Bisektionssuche (python2.7)
[Python] Bisection-Suche ABC155D
Verbesserte Suche nach Pokemon-Rennwerten mit Python
Verwenden von Python # externen Paketen
Python Bit vollständige Suche
WiringPi-SPI-Kommunikation mit Python
Lineare Suche in Python
Dichotomie mit Python
Altersberechnung mit Python
Dichotomie mit Python 3
Namensidentifikation mit Python
Hinweise zur Verwendung von Python-Unterprozessen
Binäre Suche in Python
Versuchen Sie es mit Tweepy [Python2.7]
Crawlen mit Python und Twitter API 1-Einfache Suchfunktion
Verwenden Sie die Such-API der National Parliament Library in Python
Python-Memo mit perl-ternärem Operator
Scraping mit Python 3.5 async / await
[Python] BFS (Suche nach Breitenpriorität) ABC168D
Speichern Sie Bilder mit Python3-Anforderungen
[S3] CRUD mit S3 unter Verwendung von Python [Python]
[Python] Versuchen Sie, Tkinters Leinwand zu verwenden
Twitter-Grafiknotiz mit Python
Holen Sie sich Twitter-Timeline mit Python
Verwenden Sie die Twitter-API mit Python
In-Graph-Pfadsuche mit Networkx
Verwenden von Quaternion mit Python ~ numpy-quaternion ~
Python-Notizen zur Verwendung von Perl-Spezialvariablen
[Python] Verwenden von OpenCV mit Python (Basic)
Versuchen Sie es mit der Twitter-API
Scraping mit Python 3.5 Async-Syntax
Überwachung von Website-Änderungen mit Python
Starten Sie mit Python zu Selen
Homebrew Python - Youtube Suchprogramm
Ändern Sie die Python-Version mit pyenv
Binäre Suche in Python / C ++
Python: Grundlagen der Verwendung von Scikit-Learn ①
# 1 [python3] Einfache Berechnung mit Variablen
Vollbit-Suche mit Python
Versuchen Sie es mit der Twitter-API
[Python] DFS (Tiefenprioritätssuche) ABC157D