2016-06-15 2 views
2

Ich versuche, meine Daten mithilfe von Fitbit API herunterzuladen. Ich habe herausgefunden, wie man Daten eines bestimmten Tages erhält, was gut ist. Und hier ist der curl Befehl, den ich verwenden:Wie konvertiert man diesen curl-Befehl in einige Python-Codes, die dasselbe tun?

curl -i -H "Authorization: Bearer (here goes a very long token)" https://api.fitbit.com/1/user/-/activities/heart/date/2016-6-14/1d/1sec/time/00:00/23:59.json >> heart_rate_20160614.json 

Allerdings würde Ich mag Hunderte von Tagen, Daten sammeln und ich möchte nicht, dass manuell tun. Also ich denke, ich könnte eine Python-Schleife verwenden. Ich lese einige andere Themen wie und this one, weiß aber immer noch nicht, wie man diese Curl-Befehle mithilfe von urllib2 in Python-Sprache "übersetzt".

Ich habe dies versucht:

import urllib2 
url = 'https://api.fitbit.com/1/user/-/activities/heart/date/today/1d/1sec/time/00:00/00:01.json' 
data = '{Authorization: Bearer (here goes a very long token)}' 
req = urllib2.Request(url,data) 
f = urllib2.urlopen(req) 

aber die bekam einen Fehler sagt: „HTTP-Fehler 404: Not Found“

Also, was ist der richtige Weg, um diesen curl Befehl python Sprache zu ‚übersetzen‘ ? Vielen Dank!

Antwort

3

Das Problem kommt von der Konstruktion des Objekts Request: Standardmäßig ist der zweite Parameter die Daten, die Sie mit der Anfrage übergeben möchten. Stattdessen müssen Sie angeben, dass Header übergeben werden sollen. Dies ist der richtige Weg, es zu tun:

import urllib2 
url = 'https://api.fitbit.com/1/user/-/activities/heart/date/2016-6-14/1d/1sec/time/00:00/23:59.json' 
hdr = {'Authorization': 'Bearer (token)'} 
req = urllib2.Request(url,headers=hdr) 
f = urllib2.urlopen(req) 

Dieser übt einen 401 auf meiner Seite, aber sollten Sie mit Ihrem Token arbeiten.

Sie können weitere Informationen auf urllib2 haben (und die Anforderungs-Klasse) here

Allerdings empfehle ich Ihnen einen Blick auf Requests nehmen, die meiner Meinung nach ist einfacher zu bedienen und sehr gut dokumentiert.

Ich hoffe, es wird hilfreich sein.

1

Sie können die ausgezeichnete lib requests verwenden, die meiner Meinung nach viel einfacher zu verwenden ist als urllib.

Zuerst pip install requests, dann in Ihrem Dolmetscher:

import requests 
response = requests.get(url='https://api.fitbit.com/1/user/-/activities/heart/date/2016-6-14/1d/1sec/time/00:00/23:59.json', headers={'Authorization':'Bearer <TOKEN>'}) 
if response.ok: 
    print response.content 
else: 
    print "error", response.content 

Von hier aus können Sie bequem die Antwortinhalt über response.content oder response.json(), wenn es sich um ein JSON ist, und schreibt sie in eine Datei.

Verwandte Themen