Ref
https://2.python-requests.org//en/latest/
import requests
r = requests.get(“https://note.qw.st”)
print(r.text)
HTTP ライブラリrequests.get('URL')
で GET リクエストができる
レスポンスに対して .text
とすることで, レスポンスボディをテキスト形式で取得できる
pip install requests
使い方
ライブラリのインポート
import requests
リクエスト
各種 HTTP メソッドに一対一対応するメソッドが用意されている.
# GET requests.get('URL') # POST requests.post('URL') # PUT requests.put('URL') # DELETE requests.delete('URL') # header の取得 requests.head('URL')
パラメータの付与
リクエストメソッドの引数に params=付与するパラメーターの hash
で付与する.
>>> payload = {'key1': 'value1', 'key2': 'value2'} >>> r = requests.get('URL', params=payload)
カスタムヘッダー
GET リクエストで UA を指定するとき
>>> headers = {'User-Agent': 'Sample Header'} >>> requests.get('URL', headers=headers)
POST リクエストで HTTP ヘッダーにデータを追加する時
>>> payload = {'send': 'data'} >>> requests.post('URL', data=json.dumps(payload))
レスポンスの中身
text
返ってきたレスポンスボディをテキスト形式で取得. リクエストは自動的に unicode にデコードされている.
>>> r = requests.get('http://yahoo.com/') >>> r.text '<!DOCTYPE html>\n<html lang="en-US" class="dev-desktop uni-purple-border bkt901 https uni-dark-purple sasb-space" style="">\n<!-- m2 template -->\n<head>\n <meta http-equiv="Content-Type" ...
encoding
エンコーディング情報を取得
content
レスポンスボディをバイナリ形式で取得.
>>> import requests >>> r = requests.get('http://www.fnal.gov/faw/designstandards/filesfordownload/FermiLogo_blue.gif') >>> r.content
各種レスポンス毎の処理
画像
PIL の Image モジュール を使う.
>>> from PIL import Image >>> from StringIO import StringIO >>> r = requests.get('http://www.fnal.gov/faw/designstandards/filesfordownload/FermiLogo_blue.gif') >>> i = Image.open(StringIO(r.content))
JSON
>>> requests.get('http://ci.nii.ac.jp/ncid/BB08796640.json').json() {'@context': {'foaf': 'http://xmlns.com/foaf/0.1/', 'prism': 'http://prismstandard.org/namespaces/basic/2.0/', 'rdfs': 'http://www.w3.org/2000/01/rdf-schema#', 'owl': 'http://www.w3.org/2002/07/ ...
サンプル
requests_use.py
# -*- coding: utf-8 -*- import doctest import requests def sample(query): """ requests sample that use qiita search api >>> 'title' in sample('python') True >>> 'totle' in sample('python') False """ q = {'q': query} r = requests.get('https://qiita.com/api/v1/search', params=q) return list(r.json()[0].keys()) if __name__ == "__main__": doctest.testmod()