TweetSentiments.com API-скрипт Python - PullRequest
1 голос
/ 06 марта 2012

У меня нет большого опыта работы с python, но я бы хотел сохранить ответ от TweetSentiments.com API.

Для получения дополнительной информации посетите - http://intridea.com/blog/2010/11/29/sentiment-analysis-using-tweetsentimentscom-api

Iиметь файл CSV, заполненный различными твитами, и хотел бы иметь возможность чтения из файла в API (csvreader.fieldnames ??) с запросом типа 'http://data.tweetsentiments.com:8080/api/analyze.json?q=’.

. Кажется, единственный возможный ответ -JSON, но я бы предпочел вернуть результаты в другой CSV-файл с такими полями, как 'tweet' и 'rating'.

Поэтому мне интересно создать скрипт на python, который -

Читает CSVфайл чириканья> запрос конструкции> API запросов> форматирует ответ JSON> записывает в файл CSV.

Мне просто нужна основа, так как я пытаюсь найти пример кода.

Попробовал с помощью cURLкоманда из командной строки 'curl' http://data.tweetsentiments.com:8080/api/analyze.json?q=”’

Но вернул '400 - Bad Request'.

Я подумал, что если получу ответ, я мог бы использовать это как отправную точку.

Дополнительная информация - реализуется на 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: у объекта« module »нет атрибута« request ».Спасибо, что нашли время, чтобы обсудить это со мной!

<code>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

1 Ответ

3 голосов
/ 06 марта 2012

Это то, для чего Python отлично подходит - хороший выбор! Есть несколько разных вещей, которые нужно сделать по порядку.

  • Считайте файл CSV.

    Вы захотите использовать модуль csv; в частности, csv.Reader или csv.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"])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...