0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PythonでAPIを取得する時の注意点

Last updated at Posted at 2024-08-21

PythonでAPIを取得する

PythonでAPIを扱うときは、以下のようなライブラリを使うことが多いと思います。

import requests
import json

requestsはAPIリクエストを送るためのライブラリで、jsonはJSON形式のデータを扱うためのライブラリです。基本的にAPIを叩くとJSON形式でデータが返ってくるので、それを変換してやる必要があります。

しかし、APIを叩く際にはいくつか注意点があります。特に、URLエンコードに関する注意点があります。日本語や特殊文字を含むURLをリクエストする際には、URLエンコードを行う必要があります。

import requests
import json
import urllib.parse

param="日本語や特殊文字を含むパラメータ"
url = 'https://example.com/api?param='
encorded_param = urllib.parse.quote(param)
url += encorded_param
response = requests.get(url)
data = json.loads(response.text)

パーセントURLエンコードを行うためには、urllib.parse.quote()を使います。これで日本語や特殊文字を含むURLをリクエストすることができます。具体的に言うと、以下のようなURLがエンコードされます(上のコードとは関係ありません)。

https%3A%2F%2Fja.wikipedia.org%2Fwiki%2F%25E6%2596%25B0%25E4%25B8%2596%25E7%25B4%2580%25E3%2582%25A8%25E3%2583%25B4%25E3%2582%25A1%25E3%2583%25B3%25E3%2582%25B2%25E3%2583%25AA%25E3%2582%25AA%25E3%2583%25B3&usg=AOvVaw2Pi4nFYyX41yEBpz_jlsLX&opi=89978449

これによって、意図した通りのAPIリクエストを送ることができます。基本的には、URLエンコードを行っておけば問題ないでしょう。

追記

コメントで実行時エラーが起きるとのご指摘をいただいたのでコードを修正しました。ご指摘ありがとうございます。

参考

PythonでURLエンコードする際の初歩的なミス #Python3 - Qiita

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?