import requests

Python

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()

コメント

タイトルとURLをコピーしました