Holen Sie sich Tweepy Suchergebnisse als JSON
Ich würde gerne die Suchergebnisse von Twitter mit Tweepy als JSON.
Ich sah hier, dass ich sollte hinzufügen, eine Klasse zu Tweepy-code, damit dieses feature funktioniert.
Aber wenn ich mir anschaue, Tweepy-code, das ist, was ich bekomme :
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']
So, ich bin nicht verpflichtet, diese hack seinen Codes, da die Funktion schon vorhanden ist.
Dies ist, wie mein code aussieht:
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):
Dies ist die Fehlermeldung die ich bekomme :
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
Was soll ich undrestand von diesem Fehler ? Wie kann ich es beheben ?
- Eine bessere (und einfachere) Vorgehensweise finden Sie in diesem Antwort, um eine ähnliche Frage
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie arbeiten können, ohne Cursor, die Sie verwenden konnten JSONParser. Aber wenn Sie behandeln können, paging Sie können es so machen:
Stellen Sie sicher, dass Sie ändern rpp zu zählen, weil rpp ist veraltet, in Twitter-Such-API
Bekommen Sie die Ergebnisse in Ihren raw-format. Das bedeutet, dass Sie erhalten ein dict mit zwei Schlüsseln
Erhalten Sie Ihr suchergebnis aus dem "Status" - Wert.
Wenn Sie Cursor verwenden, wie dies
searched_tweets
ist eine Liste von JSON-Objekten, währendjson_strings
ist eine Liste von JSON-stringsstatus._json
ist eigentlich eindict
status._json
ist ein private member und sollte daher nicht verwendet werden.