2017-11-25 6 views
1

データサイエンスの学習をプログラミングおよび作業するのが初めてです。私は最近、urllibパッケージとリクエストモジュールを使って最初のAPIリクエストを作成しようとしていますが、これまでのところうまく失敗しました。私はAPIにアクセスするためにPythonで次をコーディングする必要があり、ウェブサイトの状態からPythonを使用してトークンを使用してAPIに最初にリクエストする方法3.6

ドキュメント:

curl https://soccer.sportmonks.com/api/v2.0 
    -H "Accept: application/json" 
    -X GET 
    -d 
     '{ 
      "api_token" : "your-token" 
     }' 

私は成功せず、urllibはパッケージを使用して、以下を試してみました:

import urllib.request 
import urllib.parse 
url = 'https://soccer.sportmonks.com/api/v2.0' 
values = {'H' : "Accept: application/json", 'X' : 'GET', 'api_token' : 
      'xxxxxxxxxxxxx'} 

data = urllib.parse.urlencode(values) 
data = data.encode('ascii') 
req = urllib.request.Request(url, data) 
response = urllib.request.urlopen(req) 

このコードは、あらゆる種類のエラーを投げます。最新のものは次のとおりです。urllib.error.HTTPError:HTTPエラー500:内部サーバーエラー

私はAPIを呼び出す方法から、私は間違って何をしていますか?私はそれをやっていないのですか?要求モジュールを使用して

は、私は次のことを試してみた:

import requests 

    response = requests.get(url, values) # both arguments inside the function 
    are defined above 

これは、再びエラーのすべての種類をスローします。私は何を正しくしていないのですか?

多くのご協力をいただければ幸いです!

答えて

0

要求あなたはこれがあなたのカールの要求に合致する

response = requests.get( url, headers={'Accept': 'application/json'}, data={'api_token' : 'xxxxxxxxxxxxx'} )

、別のキーワード引数としてヘッダとデータを指定することができます、しかし、あなたは同様にあなたのヘッダにAPIトークンを追加することを検討することをお勧めします。 Python辞書を使う方法ではなく、文字列を入力引数として使う方法ではありません。

サイドノートリクエストは、urllib3に簡単にapiを提供する素晴らしいライブラリです。あなたが正当な理由がない限り、それを使用することをおすすめします。

+0

データを抽出するためにAPIを呼び出す前に自分自身を認証する必要がありますか? – Newkid

+0

これらの要求は単独で行われるため、すべての認証が含まれている必要があります。この場合、それはデータキーワードに含まれます。遅れて返信して申し訳ありません。 – tmcnicol

関連する問題