Communication HTTP avec Python

Une note sur la façon de communiquer avec HTTP en Python. (Pour la série Python3)

Bibliothèque de communication HTTP

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.

OBTENIR avec urllib.request

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)

Demander le codage des paramètres

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

Communication HTTP avec Python
Communication série avec Python
Communication de socket avec Python
Communication série avec python
Afficher la communication Python avec Fiddler
Serveur HTTP facile avec Python
Communication de socket avec Python LEGO Mindstorms
J'ai essayé la communication SMTP avec Python
FizzBuzz en Python3
Grattage avec Python
Statistiques avec python
Grattage avec Python
Python avec Go
Intégrer avec Python
AES256 avec python
Testé avec Python
python commence par ()
avec syntaxe (Python)
Bingo avec python
Zundokokiyoshi avec python
Excel avec Python
Micro-ordinateur avec Python
Cast avec python
Type de téléchargement de partage HTTP réalisé avec Python
Communication de socket en utilisant le serveur de socket avec python maintenant
Zip, décompressez avec python
Jugement des nombres premiers avec Python
Python avec eclipse + PyDev.
Analyse de données avec python 2
Grattage en Python (préparation)
Essayez de gratter avec Python.
Recherche séquentielle avec Python
"Orienté objet" appris avec python
Exécutez Python avec VBA
Résolvez AtCoder 167 avec python
[Python] Utiliser JSON avec Python
Requête HTTP en Python
Apprenez Python avec ChemTHEATER
Exécutez prepDE.py avec python3
Traitement de la communication par Python
Collecter des tweets avec Python
3. 3. Programmation IA avec Python
Méthode Kernel avec Python
Non bloquant avec Python + uWSGI
Grattage avec Python + PhantomJS
Publier des tweets avec python
Conduisez WebDriver avec python
Utiliser mecab avec Python 3
[Python] Redirection avec CGIHTTPServer
Analyse vocale par python
Pensez à yaml avec python
Utiliser Kinesis avec Python
Premiers pas avec Python
Getter Zundko avec python
Gérez Excel avec python
Loi d'Ohm avec Python
Jugement des nombres premiers avec python
Exécutez Blender avec python
Résoudre des maths avec Python
Carte thermique par Python + matplotlib
Multi-processus de manière asynchrone avec python