Ich versuche, Daten von Twitter zu erhalten, mit Tweepy für einen Benutzernamen eingegeben an der Befehlszeile. Ich möchte ein paar Daten über den Status und den Benutzer extrahieren, also habe folgendes herausgefunden:Wie kann ich alle Tweets und Attribute für einen bestimmten Benutzer mit Python abrufen?
Beachten Sie, dass ich alle erforderlichen Module ok importiere und oauth + Schlüssel habe (nur nicht hier enthalten)) und der Dateiname korrekt ist, nur geändert:
# define user to get tweets for. accepts input from user
user = tweepy.api.get_user(input("Please enter the twitter username: "))
# Display basic details for twitter user name
print (" ")
print ("Basic information for", user.name)
print ("Screen Name:", user.screen_name)
print ("Name: ", user.name)
print ("Twitter Unique ID: ", user.id)
print ("Account created at: ", user.created_at)
timeline = api.user_timeline(screen_name=user, include_rts=True, count=100)
for tweet in timeline:
print ("ID:", tweet.id)
print ("User ID:", tweet.user.id)
print ("Text:", tweet.text)
print ("Created:", tweet.created_at)
print ("Geo:", tweet.geo)
print ("Contributors:", tweet.contributors)
print ("Coordinates:", tweet.coordinates)
print ("Favorited:", tweet.favorited)
print ("In reply to screen name:", tweet.in_reply_to_screen_name)
print ("In reply to status ID:", tweet.in_reply_to_status_id)
print ("In reply to status ID str:", tweet.in_reply_to_status_id_str)
print ("In reply to user ID:", tweet.in_reply_to_user_id)
print ("In reply to user ID str:", tweet.in_reply_to_user_id_str)
print ("Place:", tweet.place)
print ("Retweeted:", tweet.retweeted)
print ("Retweet count:", tweet.retweet_count)
print ("Source:", tweet.source)
print ("Truncated:", tweet.truncated)
ich würde dies gerne schließlich durch alle eines Benutzers Tweets iterieren (bis 3200 Grenze). Das Wichtigste zuerst. Bisher obwohl ich zwei Probleme haben, bekomme ich folgende Fehlermeldung in Bezug auf Retweets:
Please enter the twitter username: barackobamaTraceback (most recent call last):
File " usertimeline.py", line 64, in <module>
timeline = api.user_timeline(screen_name=user, count=100, page=1)
File "C:\Python32\lib\site-packages\tweepy-1.4-py3.2.egg\tweepy\binder.py", line 153, in _call
raise TweepError(error_msg)
tweepy.error.TweepError: Twitter error response: status code = 401
Traceback (most recent call last):
File "usertimeline.py", line 42, in <module>
user = tweepy.api.get_user(input("Please enter the twitter username: "))
File "C:\Python32\lib\site-packages\tweepy-1.4-py3.2.egg\tweepy\binder.py", line 153, in _call
raise TweepError(error_msg)
tweepy.error.TweepError: Twitter error response: status code = 404
Passing den Benutzernamen als eine Variable auch ein Problem zu sein scheint:
Traceback (most recent call last):
File " usertimleline.py", line 64, in <module>
timeline = api.user_timeline(screen_name=user, count=100, page=1)
File "C:\Python32\lib\site-packages\tweepy-1.4-py3.2.egg\tweepy\binder.py", line 153, in _call
raise TweepError(error_msg)
tweepy.error.TweepError: Twitter error response: status code = 401
Ich habe isoliert diese beiden Fehler, dh sie arbeiten nicht zusammen.
Verzeihen Sie meine Ignoranz, ich bin nicht zu heiß mit Twitter APIs, aber lerne ziemlich schnell. Die Dokumentation von Tweepy ist wirklich scheiße und ich habe viel im Netz gelesen, ich kann es einfach nicht reparieren lassen. Wenn ich das sortieren kann, werde ich ein paar Unterlagen hochladen.
Ich weiß, wie man die Daten in eine MySQL db sobald extrahiert extrahiert (es wird das tun, anstatt auf dem Bildschirm zu drucken) und manipulieren, damit ich Sachen damit machen kann, es gerade herauskommt, dass ich bin Probleme haben mit. Hat jemand irgendwelche Ideen oder gibt es eine andere Methode, die ich in Betracht ziehen sollte?
Jede Hilfe wirklich geschätzt. Prost
EDIT:
von @Eric heute Morgen Olson Im Anschluss an Vorschlag; Ich habe Folgendes getan.
1) Erstellt eine völlig neue Reihe von Oauth Anmeldeinformationen zu testen. 2) kopierten Code über in ein neues Skript wie folgt:
Oauth
consumer_key = "(removed)"
consumer_secret = "(removed)"
access_key="88394805-(removed)"
access_secret="(removed)"
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_key, access_secret)
api=tweepy.API(auth)
# confirm account being used for OAuth
print ("API NAME IS: ", api.me().name)
api.update_status("Using Tweepy from the command line")
Das erste Mal, dass ich das Skript ausführen, es funktioniert gut und aktualisiert meinen Status und gibt den Namen API wie folgt:
>>>
API NAME IS: Chris Howden
dann von diesem Punkt auf bekomme ich diese:
Traceback (most recent call last):
File "C:/Users/Chris/Dropbox/Uni_2012-3/6CC995 - Independent Studies/Scripts/get Api name and update status.py", line 19, in <module>
api.update_status("Using Tweepy frm the command line")
File "C:\Python32\lib\site-packages\tweepy-1.4-py3.2.egg\tweepy\binder.py", line 153, in _call
raise TweepError(error_msg)
tweepy.error.TweepError: Twitter error response: status code = 403
Die Der einzige Grund, warum ich dafür etwas tun kann, ist, dass es das generierte Zugriffstoken zurückweist. Ich sollte das Zugangstoken nicht erneuern müssen, sollte ich?
Ace, danke für deine Bemühungen. Ich habe in der Zwischenzeit versucht, einen anderen Weg zu finden, mit dem Tweepy-Modul alles zu bekommen, was ich wollte, aber das hilft, json ein wenig besser zu verstehen. – chowden
Ich werde posten, was ich gefunden habe, wenn alles fertig ist. – chowden