Question

Noob python user:

I've created file that extracts 10 tweets based on the api.search (not streaming api). I get a screen results, but cannot figure how to parse the output to save to csv. My error is TypeError: expected a character buffer object.

I have tried using .join(str(x) and get other errors.

My code is

import tweepy
import time
from tweepy import OAuthHandler
from tweepy import Cursor

#Consumer keys and access tokens, used for Twitter OAuth 
consumer_key = ''
consumer_secret = ''
atoken = ''
asecret = ''

# The OAuth process that uses keys and tokens
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(atoken, asecret)

# Creates instance to execute requests to Twitter API
api = tweepy.API(auth)

MarSec = tweepy.Cursor(api.search, q='maritime security').items(10)

for tweet in MarSec:
    print " "
    print tweet.created_at, tweet.text, tweet.lang

saveFile = open('MarSec.csv', 'a')
saveFile.write(tweet)
saveFile.write('\n')
saveFile.close()

Any help would be appreciated. I've gotten my Streaming API to work, but am having difficulty with this one.

Thanks.

Was it helpful?

Solution

tweet is not a string or a character buffer. It's an object. Replace your line with saveFile.write(tweet.text) and you'll be good to go.

saveFile = open('MarSec.csv', 'a')
for tweet in MarSec:
    print " "
    print tweet.created_at, tweet.text, tweet.lang
    saveFile.write("%s %s %s\n"%(tweet.created_at, tweet.lang, tweet.text))

saveFile.close()

OTHER TIPS

I just thought I'd put up another version for those who might want to save all the attributes of a tweepy.models.Status object, if you're not yet sure which attributes of each tweet you want to save to file.

import json

search_results = []
for status in tweepy.Cursor(api.search, q=search_text).items(5000):
    search_results.append(status._json)

with open('search_results.json', 'w') as f:
    json.dump(search_results, f)

The first block will store the search results into a list of dictionaries, and the second block will output all the tweets into a json file. Please beware, this might use up a lot of memory if the size of your search results is very big.

This is Twitter's classic error code when something is wrong while sending a wrong image.

Try to find images you are trying to upload and check the format of the images.

The only thing I did was erase the images that MY media player of Windows can´t read and that's all! the script run perfectly.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top