Obtenir Tweepy les résultats de recherche sous forme de JSON
Je voudrais avoir le résultat de recherche de Twitter à l'aide de Tweepy JSON.
J'ai vu ici que je devrais ajouter une classe à Tweepy code pour faire de cette fonction.
Mais quand je regarde Tweepy code, c'est ce que j'obtiens :
class JSONParser(Parser):
payload_format = 'json'
def __init__(self):
self.json_lib = import_simplejson()
def parse(self, method, payload):
try:
json = self.json_lib.loads(payload)
except Exception, e:
raise TweepError('Failed to parse JSON payload: %s' % e)
needsCursors = method.parameters.has_key('cursor')
if needsCursors and isinstance(json, dict) and 'previous_cursor' in json and 'next_cursor' in json:
cursors = json['previous_cursor'], json['next_cursor']
return json, cursors
else:
return json
def parse_error(self, payload):
error = self.json_lib.loads(payload)
if error.has_key('error'):
return error['error']
else:
return error['errors']
Je ne suis donc pas obligé de pirater son code depuis le fucntion existe déjà.
C'est ainsi que mon code est:
from tweepy.parsers import JSONParser
for tweet in tweepy.Cursor(api.search,
q=hashtag,
include_entities=True,
rpp=100,
parser=tweepy.parsers.JSONParser()
).items(limit):
C'est l'erreur que je reçois :
print (json.dumps(tweet))
File "/usr/lib/python2.7/json/__init__.py", line 243, in dumps
return _default_encoder.encode(obj)
File "/usr/lib/python2.7/json/encoder.py", line 207, in encode
chunks = self.iterencode(o, _one_shot=True)
File "/usr/lib/python2.7/json/encoder.py", line 270, in iterencode
return _iterencode(o, 0)
File "/usr/lib/python2.7/json/encoder.py", line 184, in default
raise TypeError(repr(o) + " is not JSON serializable")
TypeError: <tweepy.models.Status object at 0xb6df2fcc> is not JSON serializable
Que dois-je undrestand de cette erreur ? Comment puis-je résoudre ce problème ?
- Une meilleure (et plus simple) approche peut être trouvé dans ce répondre pour une question similaire
Vous devez vous connecter pour publier un commentaire.
Si vous pouvez travailler sans Curseur, vous pouvez utiliser JSONParser. Mais si vous pouvez gérer la pagination, vous pouvez le faire comme ceci:
Assurez-vous de changer rpa à compter car rpa est obsolète dans la Recherche Twitter API
Vous obtiendrez les résultats dans leur format raw. Ce qui signifie que vous recevrez une dict avec deux clés
Vous pouvez obtenir les résultats de votre recherche de "statuts" de la valeur.
Si vous utilisez le Curseur comme ce
searched_tweets
est la liste des objets JSON, tandis quejson_strings
est une liste de chaînes JSONstatus._json
est en fait undict
status._json
est un membre privé et ne devraient donc pas être utilisés.