私は、Tweepy と Twitter のストリーミング API を使用して、PostreSQL データベースにテーブルを作成しようとしてきました。私は非常に近いです。私はそれを手に入れるのに1行しか離れていないと信じています。私は次のような多くの例を見てきました: http://andrewbrobinson.com/2011/07/15/using-tweepy-to-access-the-twitter-stream/ http://blog.creapptives.com/post/14062057061 /the-key-value-store-everyone-ignored-postgresql Python tweepy sqlite3 db への書き込み tweepy stream to sqlite database - 無効な synatx tweepy を使用した Twitter のストリーミング API へのアクセス など
Tweepy を使用して非常に簡単にツイートをストリーミングできるようになったので、コンシューマ キー、コンシューマ シークレット、アクセス キー、およびアクセス シークレットが正しいことがわかります。また、Postgres をセットアップし、作成したデータベースに正常に接続しています。.py ファイルから psycopg2 を使用して、データベースのテーブルにハードコードされた値をテストしましたが、これも機能しています。選択したキーワードに基づいてツイートがストリーミングされ、データベース内のテーブルに正常に接続されています。これで、つぶやきを postgres データベースのテーブルにストリームするだけで済みます。私が言ったように、私はとても近くにいるので、どんな助けでも大歓迎です。
この簡素化されたスクリプトは、目的のテーブルにデータを挿入します。
import psycopg2
try:
conn = psycopg2.connect("dbname=teststreamtweets user=postgres password=x host=localhost")
print "connected"
except:
print "unable to connect"
namedict = (
{"first_name":"Joshua", "last_name":"Drake"},
{"first_name":"Steven", "last_name":"Foo"},
{"first_name":"David", "last_name":"Bar"}
)
cur = conn.cursor()
cur.executemany("""INSERT INTO testdata(first_name, last_name) VALUES (%(first_name)s, %(last_name)s)""", namedict);
conn.commit()
以下は、私がしばらくの間編集していたスクリプトです。
import psycopg2
import time
import json
from getpass import getpass
import tweepy
consumer_key = 'x'
consumer_secret = 'x'
access_key = 'x'
access_secret = 'x'
connection = psycopg2.connect("dbname=teststreamtweets user=postgres password=x host=localhost")
cursor = connection.cursor()
#always use this step to begin clean
def reset_cursor():
cursor = connection.cursor()
class StreamWatcherListener(tweepy.StreamListener):
def on_data(self, data):
try:
print 'before cursor' + data
connection = psycopg2.connect("dbname=teststreamtweets user=postgres password=x host=localhost")
cur = connection.cursor()
print 'status is: ' + str(connection.status)
#cur.execute("INSERT INTO tweet_list VALUES (%s)" % (data.text))
cur.executemany("""INSERT INTO tweets(tweet) VALUES (%(text)s)""", data);
connection.commit()
print '---------'
print type(data)
#print data
except Exception as e:
connection.rollback()
reset_cursor()
print "not saving"
return
if cursor.lastrowid == None:
print "Unable to save"
def on_error(self, status_code):
print 'Error code = %s' % status_code
return True
def on_timeout(self):
print 'timed out.....'
print 'welcome'
auth1 = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth1.set_access_token(access_key, access_secret)
api = tweepy.API(auth1)
l = StreamWatcherListener()
print 'about to stream'
stream = tweepy.Stream(auth = auth1, listener = l)
setTerms = ['microsoft']
#stream.sample()
stream.filter(track = setTerms)
Sorry if it's a bit messy of code, but have been trying many options. Like I said any suggestions, links to helpful examples, etc would be greatly appreciated as I've tried everything I can think of and am now resorting to a long walk. Thanks a ton.