■ はじめに
Python から API をコールすることになりそうで その際に使用する urllib についてメモ。
目次
【1】urllib 1)使用例 2)AWS Glue のサポート状況 3)補足:サードパーティライブラリ「Requests」 【2】API仕様 1)urllib.request.Request 2)urllib.request.urlopen 【3】サンプル 例1:Hello world 例2:APIをコールする 【4】補足:サードパーティライブラリ「Requests」
【1】urllib
* urllib = URL lib * URLに関する標準ライブラリ
1)使用例
* urllib.requestモジュールによるWebページの取得
https://atmarkit.itmedia.co.jp/ait/articles/1910/15/news018.html
2)AWS Glue のサポート状況
AWS Glue 2.0 では、 urllib も requests もサポートしている
https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-libraries.html
より抜粋 ~~~~~~~~~~~ Python modules already provided in AWS Glue version 2.0 AWS Glue version 2.0 supports the following python modules out of the box: requests==2.23.0 urllib3==1.25.8 ~~~~~~~~~~~
3)補足:サードパーティライブラリ「Requests」
* HTTPリクエストを実行できるサードパーティーライブラリ * 以下の関連記事を参照のこと
Python ~ Requestsライブラリ ~
https://dk521123.hatenablog.com/entry/2024/05/23/162229
【2】API仕様
https://docs.python.org/ja/3/library/urllib.request.html
1)urllib.request.Request
* Request オブジェクト を生成する
https://docs.python.org/ja/3/library/urllib.request.html#urllib.request.Request
2)urllib.request.urlopen
* 指定したURLにアクセスし、コンテンツを取得する
https://docs.python.org/ja/3/library/urllib.request.html#urllib.request.urlopen
【3】サンプル
例1:Hello world
import urllib.request import json url = 'https://dk521123.hatenablog.com/entry/2020/11/21/000000' # ファイルを読むみたいに、with文を使う with urllib.request.urlopen(url) as response: print(response.info()) print(json.loads(response.read().decode("utf-8")))
例2:APIをコールする
import urllib.request import json headers = { 'Content-Type': 'application/json' } request = urllib.request.Request( 'https://randomuser.me/api/', None, headers, method='GET' ) with urllib.request.urlopen(request) as response: response_body = json.load(response) print("****************") print(response_body) print("****************") gender = response_body['results'][0]['gender'] print(f"gender: {gender}") first_name = response_body['results'][0]['name']['first'] print(f"name(first): {first_name}") last_name = response_body['results'][0]['name']['last'] print(f"name(last): {last_name}") country = response_body['results'][0]['location']['country'] print(f"country: {country}")
参考文献
https://techacademy.jp/magazine/27217
https://cyublog.com/articles/python-ja/urllib-request-sample/
関連記事
Python ~ 基本編 / 文字列 ~
https://dk521123.hatenablog.com/entry/2019/10/12/075251
Python ~ Requestsライブラリ ~
https://dk521123.hatenablog.com/entry/2024/05/23/162229
Python 3 エンジニア認定基礎試験 を受けてみて
https://dk521123.hatenablog.com/entry/2020/12/07/175729
Adobe Analytics ~ API編 ~
https://dk521123.hatenablog.com/entry/2022/07/31/000000
Atlassian/Confluence の REST API を Pythonでコールする
https://dk521123.hatenablog.com/entry/2023/02/10/195242