Quand je lance ce code dans ipython (Python 2.7):Python get pose HTTPError 400 Erreur du client, mais après avoir accédé manuellement URL, vous obtiendrez des œuvres temporairement
from requests import get
_get = get('http://stats.nba.com/stats/playergamelog', params={'PlayerID': 203083, 'Season':'2015-16', 'SeasonType':'Regular Season'})
print _get.url
_get.raise_for_status()
_get.json()
Je reçois:
http://stats.nba.com/stats/playergamelog?PlayerID=203083&Season=2015-16&SeasonType=Regular+Season
---------------------------------------------------------------------------
HTTPError Traceback (most recent call last)
<ipython-input-5-8f8343b2c4cd> in <module>()
1 _get = get('http://stats.nba.com/stats/playergamelog', params={'PlayerID': 203083, 'Season':'2015-16', 'SeasonType':'Regular Season'})
2 print _get.url
----> 3 _get.raise_for_status()
4 _get.json()
/Library/Python/2.7/site-packages/requests/models.pyc in raise_for_status(self)
849
850 if http_error_msg:
--> 851 raise HTTPError(http_error_msg, response=self)
852
853 def close(self):
HTTPError: 400 Client Error: Bad Request
Cependant, si je vais à l'URL dans mon navigateur, cela fonctionne. Puis, quand je reviens au code et le réexécute après avoir manuellement visité l'URL dans mon navigateur (Chrome sur lequel iPython s'exécute), le code s'exécute sans erreur. Toutefois, il peut revenir à augmenter l'erreur dans les exécutions séquentielles.
Ce code a fonctionné pour moi des centaines voire des milliers de fois sans problème. Comment réparer cette erreur?
Merci.
'stats.nba.com' est précédé par Akamai CDN, donc la mise en cache se passe probablement à la périphérie," variée "par la chaîne de requête/URI plutôt que par des en-têtes extranous. Une fois qu'une réponse valide a été faite pour cet URI, il est mis en cache par le nœud d'extrémité CDN desservant ce client. Il semble que le serveur nécessite qu'un agent utilisateur de type bureau soit configuré pour générer une réponse valide et donc un élément pouvant être mis en cache. Bon endroit! –
@AlastairMcCormack, je pense que vous avez raison sur la mise en cache – realli
Je pense que je comprends la logique que vous avez exposée, mais au cas où je ne le fais pas, d'un point de vue purement pratique, cela signifie que je ne devrais plus jamais rencontrer ce problème. spécifier un agent utilisateur valide? – andingo