requests-cacheは、requestsの取得データをキャッシュするモジュールです。 requests-cacheを使うと、requestsは最初の1回目は実際にアクセスします。 2回目以降は、キャッシュの有効期限がきれるまでrequestsはキャッシュデータを返します。 開発などで、同じURLにrequestsでアクセスする場合、アクセス時間の短縮ができて便利です。
参考
インストール
requests-cacheは、requestsが必要です。 そのため、requestsをpipでインストールします。
pip install requests
requests-cacheもpipでインストールします。
pip install requests-cache
使用方法
基本的な使い方は以下のようになります。 requests_cache.install_cache でキャッシュが有効になります。
import requests import requests_cache requests_cache.install_cache(cache_name='example', backend='sqlite', expire_after=60*120) url = "http://example.com" response = requests.get(url) content = response.content ....
キャッシュを有効にする
キャッシュを有効にするrequests_cache.install_cacheを使います。
requests_cache.install_cache(cache_name='example', backend='sqlite', expire_after=60*120)
キャッシュの寿命などの設定については、このページの以下を参照
キャッシュクリア
キャッシュをクリアする場合は、以下を使います。
requests_cache.clear()
キャッシュを無効にする
キャッシュを無効にする場合、以下を使います。
requests_cache.disabled()
例
import requests import requests_cache requests_cache.install_cache(cache_name='example', backend='sqlite', expire_after=60*120) url = "http://example.com" response = requests.get(url) content = response.content .... with requests_cache.disabled(): response = requests.get(url) #キャッシュが無効 ...
キャッシュの設定
キャッシュ名やキャッシュ方法などを指定する箇所は、以下になります。
requests_cache.install_cache(cache_name='example', backend='sqlite', expire_after=60*120)
cache_name
キャッシュ名の指定は、キーに'cache_name'を使用し、この例では "example"になります。
cache_name='example'backendがsqliteの場合、キャッシュが作成されると、以下のようなsqliteのファイルが作成されます。 このファイル名は、キャッシュ名 + ".sqlite" になります。
example.sqlite
第一引数に指定することでcache_nameを省略することが可能です。
requests_cache.install_cache('example', backend='sqlite', expire_after=60*120)
backend
キャッシュ方法の指定は、キーに'backend'を使用します。 この例では、Sqliteになります。
backend='sqlite'
backendに指定できるのは、以下になります。
- sqlite
- mongodb
- redis
- memory
expire_after
expire_afterは、キャッシュの寿命指定になり、timedelta、または秒数を指定します。 例では、60 * 120 なので、キャッシュの寿命は120分(2時間)になります。
expire_after=60*120
timedeltaを使用する例は以下のようになります。
import datetime expire_after = datetime.timedelta(hours=2) requests_cache.install_cache('example', backend='sqlite', expire_after=expire_after)
以下のようにすることも可能です。
from datetime import timedelta requests_cache.install_cache('example', backend='sqlite', expire_after=timedelta(hours=2))
サンプル
requests_cacheを使ったサンプル
beautifulsoup
BeautifulSoupで使用するサンプルは以下のようになります。
from bs4 import BeautifulSoup import requests import requests_cache requests_cache.install_cache('example', backend='sqlite', expire_after=60*120) url = "http://example.com" response = requests.get(url) content = response.content soup = BeautifulSoup(content, 'html.parser')