ホームページ > バックエンド開発 > Python チュートリアル > Pythonを使用してHTTP APIからデータを取得します

Pythonを使用してHTTP APIからデータを取得します

Christopher Nolan
リリース: 2025-02-10 15:11:12
オリジナル
748 人が閲覧しました

Fetching Data from an HTTP API with Python

pythonはhttp APIに効率的にアクセスします:ライブラリを要求し、キャッシュを要求します

この記事は「Practical Python」から抜粋されており、著者のStuartは、Pythonといくつかのサードパーティモジュールを使用してHTTP APIに簡単にアクセスする方法を示しています。

ほとんどの場合、サードパーティのデータを処理するには、HTTP APIへのアクセスが必要です。つまり、手動ではなくマシンで読み取るように設計されたWebページにHTTPリクエストを送信します。 APIデータは通常、通常はJSONまたはXMLでマシン読み取り可能な形式です。 Pythonを使用してHTTP APIにアクセスする方法を見てみましょう。

HTTP APIを使用する基本原則は簡単です:

    APIのURLにHTTPリクエストを送信します。これには、認証情報(APIキーなど)が含まれる場合があります。
  1. データを取得します。
  2. データを使用して、有用な操作を完了します。
Python Standard Libraryは、追加のモジュールなしでこのすべてを実行するのに十分な機能を提供しますが、プロセスを簡素化するためにいくつかのサードパーティモジュールを使用すると、作業が容易になります。最初のものは

モジュールです。これは、Pythonの組み込みrequestsurllib.requestよりもHTTPデータをより便利にするPython用のHTTPライブラリであり、python -m pip install requestsを使用してインストールできます。

その使いやすさを示すために、PixabayのAPIを使用します(ここに文書化されています)。 Pixabayは、すべての画像を再利用できる写真Webサイトであり、非常に便利なリソースになります。フルーツの写真に焦点を当てます。後でファイルを操作するとき、収集されたフルーツの写真を使用しますが、今ではフルーツの写真を見つけたいだけです。

最初に、Pixabayでどの写真が利用できるかをすぐに確認します。私たちは100枚の写真をつかみ、それらをすばやく閲覧し、私たちが望むものを選択します。これを行うには、Pixabay APIキーが必要なため、アカウントを作成してから、APIドキュメントの検索画像セクションからキーを取得する必要があります。

モジュールを要求

requestsモジュールを使用してHTTP要求をAPIに行うことの基本バージョンには、HTTP URLの構築、リクエストの作成、および読み取り応答が含まれます。ここで、応答はJSON形式です。 requestsモジュールは、各ステップを非常にシンプルにします。 APIパラメーターはPython Dictionaryであり、APIがJSONを返す場合、get()requestsを返信します。したがって、単純な呼び出しは次のようになります:.json

import requests

PIXABAY_API_KEY = "11111111-7777777777777777777777777"

base_url = "https://pixabay.com/api/"
base_params = {
    "key": PIXABAY_API_KEY,
    "q": "fruit",
    "image_type": "photo",
    "category": "food",
    "safesearch": "true"
}

response = requests.get(base_url, params=base_params)
results = response.json()
ログイン後にコピー
これはPythonオブジェクトを返し、APIドキュメントで示唆されているように、そのさまざまな部分を表示できます。100の結果を得るために、5つの呼び出しを行うことを決定することができます。それぞれが20の結果を得ることができますが、これは十分に堅牢ではありません。より良いアプローチは、希望する100の結果が得られるまで、リクエストページをループして停止することです。これにより、Pixabayが結果のデフォルト数(たとえば15)を変更すると問題が防止されます。また、検索用語に100枚の写真がない状況を処理することもできます。したがって、毎回ページ番号を増やし、100枚の画像に到達した場合、または取得する画像がない場合は、ループを終了します。

キャッシュhttp要求while

HTTP APIに複数回同じリクエストを行わないようにすることをお勧めします。多くのAPIには、要求者による過剰使用を避けるための使用制限があり、リクエストには時間と労力がかかります。以前のリクエストの複製を避けるようにしてください。幸いなことに、Pythonのモジュールを使用する場合、これを行うには便利な方法があります。これにより、結果を保存して保存するHTTP呼び出しをシームレスに記録します。その後、後で同じ呼び出しを行うと、APIに再びアクセスすることなく、ローカルで保存された結果が得られます。これにより、時間と帯域幅が節約されます。

を使用してインポートして

を作成してから、

の代わりにrequestsを使用してURLを取得するには、余分な労力なしでキャッシュのメリットを取得します。 python -m pip install requests-cache出力を生成requests-cache requests_cacheクエリの結果を表示するには、どこかに画像を表示する必要があります。便利な方法は、シンプルなHTMLページを作成して各画像を表示することです。 Pixabayは各画像に小さなサムネイルを提供します。これはAPI応答でCachedSessionと呼ばれるため、HTMLページを作成してこれらすべてのサムネイルを表示し、メインのPixabayページにリンクできます。写真家に欲しいと署名してください。したがって、ページの各画像は次のようになるかもしれません:session.get requests.getリストの理解を使用して

リストからビルドしてから、

を使用してすべての結果を大きな文字列に連結します。

そのリストで非常にシンプルなHTMLページを書き出すと、Webブラウザで簡単に開き、APIから取得したすべての検索結果をすばやく表示し、それらのいずれかをクリックしてダウンロードをジャンプしてフルまでジャンプします。 Pixabayページ:

previewURL

imagesこの記事は実用的なPythonから抜粋されており、SitePoint Premiumおよび電子書籍の小売業者で購入できます。 "n".join()

(以下はFAQであり、元のテキストに従って書き直され、合理化されています)

PythonのHTTP API(FAQS)Fetching Data from an HTTP API with Python

を使用してデータを取得することに関するよくある質問
  • HTTPとHTTPSの違いは何ですか? HTTPはハイパーテキスト転送プロトコルであり、HTTPSは安全なハイパーテキスト転送プロトコルです。主な違いは、HTTPSがSSL証明書を使用して、サーバーとクライアントの間に安全な暗号化された接続を確立することですが、HTTPはそうではありません。これにより、クレジットカード情報やログイン資格情報などの機密データを転送するときに、HTTPSがより安全になります。

  • pythonでHTTPはどのように機能しますか? Pythonで複数のライブラリを使用してHTTPリクエストを発行できます。最も一般的に使用されるのはrequestsです。このライブラリを使用すると、Cookieの処理、フォームデータ、マルチパートファイルなど、HTTPリクエストとプロセス応答を送信できます。これは、Webサービスと対話するための強力なツールであり、さまざまなアプリケーションで使用できます。

  • 一般的なHTTPメソッドは何ですか? Pythonでそれらを使用する方法は? 最も一般的なHTTPメソッドは、取得、投稿、配置、削除、ヘッド、オプション、およびパッチです。 Pythonでは、これらの方法を使用するためにrequestsライブラリを使用できます。たとえば、get requestを送信するには、requests.get(url)を使用して、POSTリクエストを送信するには、requests.post(url, data)を使用できます。

  • PythonでHTTP応答を処理する方法は? requestsライブラリを使用してPythonでHTTPリクエストを送信すると、応答オブジェクトが表示されます。このオブジェクトには、リクエストに対するサーバーの応答が含まれています。応答がJSON形式である場合、response.textまたはresponse.json()を使用して、応答のコンテンツにアクセスできます。また、response.status_codeを使用して、応答のステータスコードを確認することもできます。

  • PythonでHTTPヘッダーを使用する方法は? requests関数のheadersパラメーターに辞書として渡すことにより、Pythonでそれらを使用できます。たとえば、requests.get(url, headers={'User-Agent': 'my-app'})。ヘッダーを使用して、ユーザーエージェント、コンテンツタイプ、承認など、リクエストまたはクライアントに関する追加情報を提供できます。

  • PythonでCookieを処理する方法は? cookieは、応答オブジェクトのcookies属性を使用してpythonで処理できます。 response.cookiesを使用してサーバーから送信されたCookieにアクセスし、requests関数のcookiesパラメーターに辞書として渡すことにより、サーバーにCookieを送信できます。

  • pythonのpost requestを使用してフォームデータを送信する方法は? フォームデータを関数のパラメーターに辞書として渡すことにより、PythonのPOSTリクエストを使用して送信できます。たとえば、requests.postdataライブラリは、データを正しい形式で自動的にエンコードします。 requests.post(url, data={'key': 'value'}) requests

  • PythonでPOSTリクエストを使用してファイルを送信する方法は? ファイルは、PythonのPost Requestsを使用して辞書として

    関数のパラメーターに渡すことにより、送信できます。辞書には、ファイルフィールドの名前をキーとして、ファイル名とファイルオブジェクトを値として含むタプルを含める必要があります。

  • pythonのrequestsライブラリのエラーと例外を扱う方法は? Pythonのライブラリは、ネットワークエラーやタイムアウトなどの特定のタイプのエラーの例外をスローします。 Try/を除くブロックを使用して、これらの例外をキャッチし、適切に処理できます。応答のステータスコードを確認して、HTTPエラーを処理することもできます。 requests

  • Pythonで非同期HTTPリクエストを作成する方法は? ライブラリを使用して、Pythonで非同期HTTPリクエストを発行できます。このライブラリを使用すると、HTTPリクエストを非同期的に送信して応答を処理できます。これにより、多数のリクエストを処理する際にアプリケーションのパフォーマンスが大幅に向上する可能性があります。 aiohttp

以上がPythonを使用してHTTP APIからデータを取得しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート