Rufen Sie weiterhin Tweets mit bestimmten Schlüsselwörtern mithilfe der Streaming-API in Python ab

Hintergrund

Die Twitter-API unterliegt Nutzungsbeschränkungen und kann während eines bestimmten Zeitraums nicht öfter als angegeben angegeben werden. In den folgenden Artikeln werden Tweets mithilfe der Such- / Tweets-API durchsucht. Die maximale Anzahl, die mit einer API erfasst werden kann, beträgt 100 und kann nur 180 Mal in 15 Minuten ausgeführt werden.

** Suche Twitter mit Python ** http://qiita.com/mima_ita/items/ba59a18440790b12d97e

Dies ist in Ordnung, wenn nur wenige Daten vorhanden sind, eignet sich jedoch nicht für die Verwendung von "Fortsetzung der Suche nach Hash-Tags, die allgemeine Wahlen während des Wahlprogramms enthalten".

Daher bietet Twitter die Streaming-API als Methode zur ständigen Datenerfassung.

The Streaming APIs https://dev.twitter.com/streaming/overview

Streaming API Die Streaming-API kann dazu führen, dass Entwickler Twitter-Informationen mit geringer Verzögerung erhalten.

Es gibt drei Haupttypen von Streaming-APIs.

Name Erläuterung
Public streams Sie können die öffentlichen Twitter-Daten erhalten.
Kann nach Schlüsselwort oder Ort gefiltert werdenfilterIst verfügbar
User streams Ruft Daten und Ereignisse für einen bestimmten authentifizierten Benutzer ab.
Site streams Ruft Daten für mehrere Benutzer ab. Derzeit in der Beta. Der Zugriff ist auf Whitelist-Konten beschränkt.

Python-Beispiel

Zweck

Registrieren Sie weiterhin bestimmte Schlüsselwörter in der Datenbank bei Python.

Voraussetzung Bibliothek

python_twitter https://code.google.com/p/python-twitter/ Eine Bibliothek zum Betreiben von Twitter mit Python.

peewee https://github.com/coleifer/peewee Ein ORM, das SQLite, Postgres und MySQL verwenden kann.

Beispielcode

# -*- coding: utf-8 -*-
# easy_install python_twitter
import twitter
import sys
import codecs
import dateutil.parser
import datetime
import time
from peewee import *


db = SqliteDatabase('twitter_stream.sqlite')


class Twitte(Model):
    createAt = DateTimeField(index=True)
    idStr = CharField(index=True)
    contents = CharField()

    class Meta:
        database = db


# easy_Fügen Sie den folgenden Code hinzu, wenn GetStreamFilter in der neuesten Installationsversion nicht verfügbar ist
# https://github.com/bear/python-twitter/blob/master/twitter/api.py
def GetStreamFilter(api,
                    follow=None,
                    track=None,
                    locations=None,
                    delimited=None,
                    stall_warnings=None):
    '''Returns a filtered view of public statuses.

    Args:
      follow:
        A list of user IDs to track. [Optional]
      track:
        A list of expressions to track. [Optional]
      locations:
        A list of Latitude,Longitude pairs (as strings) specifying
        bounding boxes for the tweets' origin. [Optional]
      delimited:
        Specifies a message length. [Optional]
      stall_warnings:
        Set to True to have Twitter deliver stall warnings. [Optional]

    Returns:
      A twitter stream
    '''
    if all((follow is None, track is None, locations is None)):
        raise ValueError({'message': "No filter parameters specified."})
    url = '%s/statuses/filter.json' % api.stream_url
    data = {}
    if follow is not None:
        data['follow'] = ','.join(follow)
    if track is not None:
        data['track'] = ','.join(track)
    if locations is not None:
        data['locations'] = ','.join(locations)
    if delimited is not None:
        data['delimited'] = str(delimited)
    if stall_warnings is not None:
        data['stall_warnings'] = str(stall_warnings)

    json = api._RequestStream(url, 'POST', data=data)
    for line in json.iter_lines():
        if line:
            data = api._ParseAndCheckTwitter(line)
            yield data


def main(argvs, argc):
    if argc != 6:
        print ("Usage #python %s consumer_key consumer_secret access_token_key access_token_secret #tag1,#tag2 " % argvs[0])
        return 1
    consumer_key = argvs[1]
    consumer_secret = argvs[2]
    access_token_key = argvs[3]
    access_token_secret = argvs[4]
    #Der in UNICODE zu konvertierende Zeichencode entspricht dem Zielterminal.
    track = argvs[5].decode('cp932').split(',')

    db.create_tables([Twitte], True)

    api = twitter.Api(base_url="https://api.twitter.com/1.1",
                      consumer_key=consumer_key,
                      consumer_secret=consumer_secret,
                      access_token_key=access_token_key,
                      access_token_secret=access_token_secret)
    for item in GetStreamFilter(api, track=track):
        print '---------------------'
        if 'text' in item:
            print (item['id_str'])
            print (dateutil.parser.parse(item['created_at']))
            print (item['text'])
            print (item['place'])
            row = Twitte(createAt=dateutil.parser.parse(item['created_at']),
                         idStr=item['id_str'],
                         contents=item['text'])
            row.save()
            row = None

if __name__ == '__main__':
    sys.stdout = codecs.getwriter(sys.stdout.encoding)(sys.stdout, errors='backslashreplace')
    argvs = sys.argv
    argc = len(argvs)
    sys.exit(main(argvs, argc))

Wie benutzt man

python twitter_stream.py consumer_key consumer_secret access_token_key access_token_secret  #Wahl,#Wahl des Repräsentantenhauses,Wahl

Unter Berücksichtigung der Zugriffstokeninformationen und Schlüsselwörter wird im aktuellen Verzeichnis eine SQLITE-Datenbank mit dem Namen twitter_stream.sqlite erstellt.

Erläuterung

-Der neueste Code enthält die GetStreamFilter-Methode, ist jedoch in der Version, die mit easy_install von Python 2.7 erhältlich ist, nicht vorhanden. Ich implementiere hier den gleichen Code.

・ Es spielt keine Rolle, wann eine große Datenmenge fließt, aber die Erfassung der zuletzt zu filternden Tweet-Daten verzögert sich um einige Minuten.

・ Da created_at UTC-Zeit ist, ist es 9 Stunden später als japanische Zeit. Die hier registrierte Zeit plus 9 Stunden ist die Zeit in Japan.

Recommended Posts

Rufen Sie weiterhin Tweets mit bestimmten Schlüsselwörtern mithilfe der Streaming-API in Python ab
Versuchen Sie, die Kraken-API mit Python zu verwenden
Tweet mit der Twitter-API in Python
Versuchen Sie es mit der BitFlyer Ligntning API in Python
Versuchen Sie, die DropBox Core-API mit Python zu verwenden
So senden Sie automatisch E-Mails mit Anhängen mithilfe der Google Mail-API in Python
So rufen Sie den n-ten größten Wert in Python ab
Grundeinstellungen bei Verwendung der foursquare-API mit Python
Versuchen Sie, Tweets mithilfe der Twitter-API in großen Mengen zu löschen
So rufen Sie mehrere Arrays mit Slice in Python ab.
Verwenden Sie die Such-API der National Parliament Library in Python
Erhalten Sie Tweets mit beliebigen Schlüsselwörtern mithilfe der Streaming-API von Twitter
So testen Sie eine Funktion, die die aktuelle Zeit enthält, mit Freezegun in Python
Ein Skript, das Tweets mit bestimmten Schlüsselwörtern auf Twitter in Echtzeit an Slack überträgt.
Python-Programm, das täglich Tweets mit bestimmten Schlüsselwörtern sammelt und in CSV speichert
Abrufen der arXiv-API in Python
Klicken Sie in Python auf die Sesami-API
Klicken Sie auf die Web-API in Python
Greifen Sie mit Python auf die Twitter-API zu
Eine einfache Möglichkeit, die Amazon-Produkt-API in Python aufzurufen
So erhalten Sie mithilfe der Mastodon-API Follower und Follower von Python
Klicken Sie in Python auf die New Relic-API, um den Status des Servers abzurufen
Mausbedienung mit Windows-API in Python
Melden Sie sich mit Anforderungen in Python bei Slack an
Codebeispiel zum Abrufen von oauth_token und oauth_token_secret der Twitter-API in Python 2.7
Konvertieren der cURL-API in ein Python-Skript (mithilfe des IBM Cloud-Objektspeichers)
Verwendung der C-Bibliothek in Python
Vorgehensweise zur Verwendung der WEG-API von TeamGant (mit Python)
Holen Sie sich die Bild-URL mithilfe der Flickr-API in Python
Twitter-Streaming-Client zum Genießen im Terminal
Dynamisches Ersetzen der nächsten Methode in Python
Zeichnen Sie Diagramme in Julia ... Überlassen Sie die Diagramme Python
Tipps zum Erreichen der ATND-API mit Python
Lassen Sie uns Emotionen mithilfe der Emotions-API in Python beurteilen
Tipps zum Schreiben werden in Python kurz abgeflacht
So erhalten Sie die Dateien im Ordner [Python]
Klicken Sie in Python auf die Firebase Dynamic Links API
Versuchen Sie, die ChatWork-API und die Qiita-API in Python zu verwenden
Ich möchte den Fortschritt in Python anzeigen!
Eine Geschichte über einen Python-Anfänger, der versucht, Google-Suchergebnisse mithilfe der API abzurufen
Speichern Sie Ihre Herzfrequenz in Echtzeit (?) Mit der Python x Fitbit API in SpreadSheets!
Ich habe versucht, die in Python installierten Pakete grafisch darzustellen
So erhalten Sie den Variablennamen selbst in Python
So ermitteln Sie die Anzahl der Stellen in Python
Laden Sie eine JPG-Datei mit der Google Drive-API in Python hoch
Wie Sie das aktuelle Verzeichnis in Python in Blender kennen
[AWS IoT] Registrieren Sie Dinge in AWS IoT mithilfe des AWS IoT Python SDK
PUSH-Benachrichtigung von Python an Android mithilfe der Google-API
Bestimmen Sie den Schwellenwert mithilfe der P-Tile-Methode in Python
Holen Sie sich LEAD-Daten mit der REST-API von Marketo in Python
Konvertieren Sie das Bild in .zip mit Python in PDF
Senden und empfangen Sie Google Mail über die Google Mail-API mit Python
Schreiben Sie Daten mit dem Python-Anforderungsmodul in KINTONE
OpenVINO verwendet die Inference Engine Python API in einer PC-Umgebung
Ich möchte in Python schreiben! (3) Verwenden Sie Mock
Beenden bei Verwendung von Python in Terminal (Mac)
Verwendung des in Lobe in Python erlernten Modells
So führen Sie einen Befehl mit einem Unterprozess in Python aus