Une note sur la façon de communiquer avec HTTP en Python. (Pour la série Python3)
Dans Dive Into Python 3, le standard Python "[urllib.request](http://docs.python.jp/3.5/" Comment utiliser "library / urllib.request.html)" et comment utiliser un tiers "httplib2" sont présentés, et httplib2 est recommandé, mais moi-même Je souhaite utiliser autant que possible des produits authentiques, et je n'ai pas besoin d'une fonction qui ne peut être utilisée qu'avec httplib2, donc j'essaierai d'utiliser urllib.request pour le moment.
Utilisez la fonction urlopen du module urllib.request. Spécifiez simplement l'URL comme argument. Si vous n'avez pas besoin d'encoder le paramètre de requête, vous pouvez écrire "? Param1 = valeur1 & param2 = valeur2" après l'URL.
Quant à la réponse, l'objet http.client.HTTPResponse est renvoyé, utilisez donc la fonction read () pour utiliser le corps de la réponse. Obtenir.
API de recherche de code postal fournie par Ibis Co., Ltd. à titre d'essai Essayez de frapper.
http_get.py
import urllib.request
with urllib.request.urlopen("http://zipcloud.ibsnet.co.jp/api/search?zipcode=4200855") as res:
html = res.read().decode("utf-8")
print(html)
Si le paramètre de requête inclut le japonais, etc., il est nécessaire de l'encoder. Il semble que cela puisse être facilement fait avec la fonction urlencode () du module "urllib.parse". L'argument est un type de dictionnaire, et lorsque plusieurs éléments sont stockés, il devient automatiquement une chaîne de caractères de paramètre connectée par &. (Pas de leader?)
Correction des paramètres de recherche de code postal ci-dessus à spécifier de cette façon. (Comme il ne s'agit que d'ASCII, il n'est pas nécessaire de l'encoder ...)
http_get2.py
import urllib.request
import urllib.parse
#Encoder les paramètres de demande
params = {"zipcode":"4200855"}
encodedParams = urllib.parse.urlencode(params)
#Appel API avec paramètres de requête codés
with urllib.request.urlopen("http://zipcloud.ibsnet.co.jp/api/search?" + encodedParams) as res:
html = res.read().decode("utf-8")
print(html)
Recommended Posts