0

私は Python を扱うのが初めてで、プロジェクトのために Twitter のデータを MySQL データベースに収集しようとしています。このチュートリアルからデータを収集するためのスクリプトがあります。

import re
from re import sub
import time
import cookielib
from cookielib import CookieJar
import urllib2
from urllib2 import urlopen
import difflib

cj = CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
opener.addheaders = [('User-agent', 'Mozilla/5.0')]

keyWord = 'nyc'
startingLink = 'https://twitter.com/search/realtime?q='

# begin loop

def main():

    oldTwit = []
    newTwit = []
    while 1 < 2:
        try:
            sourceCode = opener.open ('https://twitter.com/search/realtime?q='+keyWord+'&src=hash').read()
            splitSource = re.findall (r'  <p class="js-tweet-text tweet-text">(.*?)</p>',sourceCode)
            for item in splitSource:
                #print item
                print ''
                print ''
                print '                           '
                aTweet = re.sub(r'<.*?>', '',item)
                print aTweet
                newTwit.append(aTweet)

            comparison = difflib.SequenceMatcher(None, newTwit, oldTwit)
            howSim = comparison.ratio()
            print '##############'
            print howSim

            oldTwit = [None]
            for eachItem in newTwit:
                oldTwit.append(eachItem)

            newTwit = [None]

            time.sleep(howSim*10)

        except Exception, e:
            print str(e)
            print 'errored in the main try'
            time.sleep(555)

main()

これにより、収集したいツイートが提供されます (このデータを分析するつもりはありません。Python を使用してデータベースに接続し、自動的にデータを収集する実験を行っています)。

また、MySQLdb を使用してデータベースを接続し、簡単な挿入ステートメントを使用してデータベースにコンテンツを追加できます。

import MySQLdb
db=MySQLdb.connect(host="127.0.0.1",user="root",passwd="",db="twitinfo")
cursor = db.cursor()
sql = "INSERT INTO tweets(text) VALUES ('?')"
cursor.execute(sql)
db.commit()

だから私の質問は、印刷物をinsertステートメントに「置き換える」方法と、値をツイートテキストにするには何を追加する必要があるかということです. 高低を検索しましたが、これについて役立つものは何も見つかりません。私も自分で試してみましたが、Python の初心者として、これの構文を推測しようとすることは、干し草の山から針を見つけるようなものです。

4

1 に答える 1

0

あなたが示すSQLは、単一の疑問符からなる文字列をDBに挿入しています。値のプレースホルダーを指定するために使用する必要がVALUES(?)あり、おそらく次のように、値を挿入するために実行関数に渡す必要があります。

sql = "INSERT INTO tweets(text) VALUES (?)"
value = "Apoplectic Fits"
cursor.execute(sql, value)

Python の先頭に import 行を追加し、ループの外で DB に接続する必要があります。おそらく、カーソル作成行をループの外に置くことができます。ループ内では、ツイート メッセージを の代わりに使用しますvalue


MySQLdbのドキュメント(新しいモジュールを使用する場合に推奨される方法) を読んだ後、.%sではなく、プレースホルダーに使用する必要があります?

変数にデータを挿入する場合は、次のようにしますaTweet

sql = "INSERT INTO tweets(text) VALUES (%s)"
cursor.execute(sql, aTweet)

未テスト。理論的には、理論と実践の間に違いはありません。実際には、あります。

于 2013-10-08T14:47:35.797 に答える