【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等からデータを取得することができ、
応用すれば、スクレイピング等も行えると思います。
是非有効活用してみてください!