Ne générez pas de communication à chaque fois que vous créez un DataFrame à partir d'une ressource Web avec read_json
Je veux obtenir des informations en utilisant l'API Web et faire diverses choses, mais il y a une limite au nombre de demandes, et si j'y accède à chaque fois, je vais bientôt être pris dans la limite supérieure. Je n'ai pas besoin d'informations en temps réel lors de l'écriture du code de test, je souhaite donc le conserver localement dans le cache.
import pandas as pd
import requests
import requests_cache
from io import StringIO
requests_cache.install_cache()
response = requests.get("https://financialmodelingprep.com/api/v3/income-statement/AAPL?apikey=demo")
content = response.content.decode()
df = pd.read_json(StringIO(content))
requests_cache
S'il y a un cache lors de l'obtention avec request.get
, la communication n'est pas effectuée et une réponse est renvoyée du cache.
Vous pouvez changer le nom du cache avec requests_cache.install_cache (" test ")
et gérer chacun d'eux.
La mise en cache se fait avec sqlite. Vous pouvez supprimer le cache en supprimant le fichier.
StringIO
Puisque le nom de fichier et l'URL sont spécifiés dans pd.read_json
, la str
obtenue par les requêtes ne peut pas être spécifiée telle quelle.
En utilisant StringIO (content)
, vous pouvez traiter str
comme un fichier.
Recommended Posts