【Pythonライブラリ】Requestsとは?

2021 年 11 月 26 日 by higakik

とある案件にて、APIを使用する機会がありました!
その際に使用したRequestsの使い方をご紹介させていただきます!

Requestsとは

PythonのHTTPライブラリです。
PythonでAPIをCALLするには、urllib2と今回紹介しているRequests
2つのライブラリがあげられると思います。
urllib2は、Pythonの標準ライブラリなので、一見簡単に実装できそうですが、
現在ではRequestsのほうがよく使われているようです。
その理由は、下記リンクにあるように、
人が使いやすいように設計されている」からでしょうね。
https://requests-docs-ja.readthedocs.io/en/latest/
これは私の持論ですが、Pythonが世界中で人気の言語となっている背景には、
誰でも簡単にかつ少ない量でコーディングができるからだと思います。
ライブラリを使うことで、簡単にやりたいことを実現できるから
人気なんですよね。
もしこの2つのライブラリの違いをもっと知りたい方は
是非調べて実際に書いてみてください。
コードの量と複雑さが全く違います!
つまり言いたいことは、

シンプルが良さのPythonで
C#やJavaのようなコーディングをしたくない!
なら、Requestsを使おう!

です。

導入の仕方

Requestライブラリは、標準ライブラリではないので、
pipを使って実装していきましょう。
やり方は簡単。下記のコマンドを打っていただくだけです。

pip install requests

あとはインポートをして、これで準備完了です。

import requests

実際に使ってみよう

1.リクエスト

リクエストにはGETやPOSTなど様々なやり方がありますが、
それぞれに対応するメソッドが用意されています。
下記よく使うリクエストをまとめました。

#GET
requests.get('リクエスト先URL')
#POST
requests.post('リクエスト先URL')
#PUT
requests.put('リクエスト先URL')
#DELETE
requests.delete('リクエスト先URL')

実際に下記のSampleコードでYoutubeにリクエストをしてみましょう。


Sampleコード

import requests
req = requests.get('https://www.youtube.com/')
print(req)

実行結果

<Response [200]>

正常なレスポンス[200]が返ってきたら成功です。

2.パラメータの付与

リクエストメソッドの引数にパラメータを付与することもできます。
例えば、ログインが必須のサイトなどでログイン情報をくっつけて
中身を取り出したいときなどに有効。

login_info = {'user'; 'user1', 'password': 'pass'}
req = requests.get('URL', params=login_info)

ちなみにURLに直接付与することも可能です。

これは実際には動きません。あくまでイメージはこんな感じです。

req = requests.get('https://www.youtube.com?user=user1&password=pass')

3.レスポンス

今度はサーバーから返ってきたレスポンスです。
レスポンスの形式にそれぞれ対応して確認できます。
下記によく使用するレスポンスをまとめました。

#テキスト形式
req.text

#HTTPステータスコード
req.status_code

#バイナリ形式
req.content

#JSON
req.json()

ちなみにリクエストで使用したSampleコードを使用すると、、、

Sampleコード

import requests

req = requests.get('https://www.youtube.com/')

print(req.text)

実行結果

<html style="font-size: 10px;font-family: Roboto, Arial, sans-serif;" lang="ja-JP" …

と画面の情報やらがレスポンスできます。

パラメータの付与と一緒に使うことで、欲しい情報を受け取ることもできます。
是非皆さん自身で使ってみてください!

まとめ

いかがだったでしょうか?
今回はPythonのHTTPライブラリ、Requestsについてご紹介させていただきました。
10行ほどのコーディングで、API等からデータを取得することができ、
応用すれば、スクレイピング等も行えると思います。
是非有効活用してみてください!

TrackBack