2012-03-06 27 views
1

我對python沒有太多的經驗,但我想要一種方法來存儲來自TweetSentiments.com API的響應。TweetSentiments.com API Python腳本

欲瞭解更多信息請訪問 - http://intridea.com/blog/2010/11/29/sentiment-analysis-using-tweetsentimentscom-api

我有一個CSV文件完全不同的鳴叫,並希望能夠從文件,如「http查詢讀取到API(csvreader.fieldnames?) ://data.tweetsentiments.com:8080/API/analyze.json q =」。

似乎唯一可能的反應是JSON,但我更願意將結果返回給另一個帶有「tweet」和「rating」字段的CSV文件。

所以我很感興趣,創造一個Python腳本 -

讀取CSV文件的鳴叫>構造查詢>詢問API>格式JSON響應>寫入CSV文件。

我只是需要一個基礎,因爲我努力尋找一些示例代碼。

使用捲曲命令在命令行 「弧線「http://data.tweetsentiments.com:8080/api/analyze.json?q=」‘

嘗試,但有一個’400 - 錯誤請求'回來。

我想如果我得到了迴應,我可以用它作爲一個起點。

額外信息 - 正在WinXp上實施。

在此先感謝您的建議!

< ---更新!--->

import csv 
import urllib 
import simplejson as json 

Tweets=[] ## Creates empty list to store tweets. 

TweetWriter = csv.writer(open('test.csv', 'w'), dialect='excel', delimiter=' ',quotechar='|') 
TweetReader = csv.reader(open("C:\StoredTweets.csv", "r")) 

for row in TweetReader: 

    #TweetList.append(rows) 
    Tweets.append({ 'tweet': row[0], 'date': row[1] }) ## Stores from CSV in list. 

for rows in Tweets: 

    #print TweetList 
    data = urllib.urlencode({'Tweet': row[0], 'Date': row[1]}) ##Takes Tweet and date to construct query. 
    #print data 
    API_request = urllib.urlopen("http://data.tweetsentiments.com:8080/api/analyze.json?q=", data) ## Adds query to end of URL and queries API 
    print API_request 
    result = json.load(urllib.request({'API_request'})) 
    print result 
    TweetWriter.write(result) ## Writes API Response to CSV file. 

這是json.load一部分,我似乎無法找到竅門。我查看了大量不同的例子,似乎無法理解它。 API_request應該包含我認爲的json結構? json響應應該存儲在另一個列表中嗎?我總是被告知「AttributeError:'模塊'對象沒有屬性'請求'。感謝您抽出寶貴時間與我一起繼續探索!

C:\>python TweetSentiment.py 
<!DOCTYPE html> 
<html> 
<head> 
    <style type="text/css"> 
    body { text-align:center;font-family:helvetica,arial;font-size:22px; 
    color:#888;margin:20px} 
    #c {margin:0 auto;width:500px;text-align:left} 
    </style> 
</head> 
<body> 
    <h2>Sinatra doesn't know this ditty.</h2> 
    <img src='/__sinatra__/404.png'> 
    <div id="c"> 
    Try this: 
    <pre>post '/api/analyze' do 
    "Hello World" 
end</pre> 
    </div> 
</body> 
</html> 

回答

3

這是Python非常適合的事情 - 很好的選擇!按順序,您需要做幾件不同的事情。

  • 閱讀CSV文件。

    您將要使用csv模塊; 。特別是,csv.Readercsv.DictReader(取決於你是否希望每一行的元組或字典

  • 構造查詢

    看一看urllib.urlencode(在Python2 - 這個名字已經在Python 3微微一變,到urllib.parse.quote)。

  • 詢問API。

    urllib.request。文檔的大量此!你可能需要做一些HTTPS的東西,包括一個API密鑰,這樣的事情。

  • 格式JSON響應。

    json.load將從urllib.Request對象返回一個字典。

  • 寫入CSV。

    csv.writer

在這裏有什麼特別的步驟可以幫助您嗎?


這裏是什麼樣的代碼可能最終會看起來像一個非常快速想法。

with open(...) as inputs, open(..., "w") as outputs: 
    inputs = csv.reader(inputs) 
    outputs = csv.writer(outputs) 

    for line in inputs: 
     query = urllib.urlencode(...) 
     result = json.load(urllib.request(...)) 
     outputs.write(result["spam"], result["ham"]) 
+0

不用了,這正是我要找的,你已經給了我一切我需要開始! 示例代碼也非常棒! 感謝您的及時回覆,並對回覆的時間表示歉意。 歡呼。 – 2012-03-06 21:22:25

+0

我正在努力與腳本的json.load部分。如果我編輯了上面的問題,可以給我一些建議嗎? – 2012-03-08 19:11:04

+0

Sure =)如果你做'urllib.request.urlopen(...)。read()'(或者你的Python版本的相應函數),你會得到你期望的所有數據嗎? – katrielalex 2012-03-08 19:16:08