HTTP-Kommunikation mit Python

Ein Hinweis zur Kommunikation mit HTTP in Python. (Für Python3-Serie)

HTTP-Kommunikationsbibliothek

In Dive Into Python 3 wird der Python-Standard "urllib.request verwendet. Die Verwendung von "library / urllib.request.html)" und die Verwendung eines Drittanbieters "httplib2" werden vorgestellt, und httplib2 wird empfohlen, aber ich selbst Ich möchte so oft wie möglich Originalprodukte verwenden und benötige keine Funktion, die nur mit httplib2 verwendet werden kann. Daher werde ich vorerst versuchen, urllib.request zu verwenden.

GET mit urllib.request

Verwenden Sie die URLopen-Funktion des Moduls urllib.request. Geben Sie einfach die URL als Argument an. Wenn Sie den Anforderungsparameter nicht codieren müssen, können Sie nach der URL "? Param1 = value1 & param2 = value2" schreiben.

Für die Antwort wird das Objekt http.client.HTTPResponse zurückgegeben. Verwenden Sie daher die Funktion read (), um den Antworttext zu verwenden. Bekommen.

Postleitzahlensuch-API, bereitgestellt von Ibis Co., Ltd. als Testversion Versuche zu schlagen.

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)

Parametercodierung anfordern

Wenn der Anforderungsparameter Japanisch usw. enthält, muss er codiert werden. Es scheint, dass dies mit der Funktion urlencode () des Moduls "urllib.parse" problemlos möglich ist. Das Argument ist ein Wörterbuchtyp. Wenn mehrere Elemente gespeichert werden, wird es automatisch zu einer Parameterzeichenfolge, die durch & verbunden ist. (Keine Führung?)

Die oben angegebenen Suchparameter für Postleitzahlen wurden auf diese Weise korrigiert. (Da es sich nur um ASCII handelt, muss es nicht codiert werden ...)

http_get2.py


import urllib.request
import urllib.parse

#Anforderungsparameter codieren
params = {"zipcode":"4200855"}
encodedParams = urllib.parse.urlencode(params)

#API-Aufruf mit codierten Anforderungsparametern
with urllib.request.urlopen("http://zipcloud.ibsnet.co.jp/api/search?" + encodedParams) as res:
    html = res.read().decode("utf-8")
    print(html)

Recommended Posts

HTTP-Kommunikation mit Python
Serielle Kommunikation mit Python
Socket-Kommunikation mit Python
Serielle Kommunikation mit Python
Einfacher HTTP-Server mit Python
Socket-Kommunikation mit Python LEGO Mindstorms
Ich habe die SMTP-Kommunikation mit Python versucht
FizzBuzz in Python3
Scraping mit Python
Statistik mit Python
Scraping mit Python
Python mit Go
In Python integrieren
AES256 mit Python
Getestet mit Python
Python beginnt mit ()
mit Syntax (Python)
Bingo mit Python
Zundokokiyoshi mit Python
Excel mit Python
Mikrocomputer mit Python
Mit Python besetzen
HTTP Split Download Typ mit Python gemacht
Socket-Kommunikation über Socket-Server mit Python jetzt
Zip, entpacken mit Python
Primzahlbeurteilung mit Python
Python mit Eclipse + PyDev.
Datenanalyse mit Python 2
Scraping in Python (Vorbereitung)
Versuchen Sie es mit Python.
Sequentielle Suche mit Python
"Objektorientiert" mit Python gelernt
Führen Sie Python mit VBA aus
Löse AtCoder 167 mit Python
[Python] Verwenden Sie JSON mit Python
HTTP-Anfrage in Python
Lerne Python mit ChemTHEATER
Führen Sie prepDE.py mit python3 aus
Kommunikationsverarbeitung durch Python
Tweets mit Python sammeln
3. 3. KI-Programmierung mit Python
Kernel-Methode mit Python
Nicht blockierend mit Python + uWSGI
Scraping mit Python + PhantomJS
Tweets mit Python posten
Fahren Sie WebDriver mit Python
Verwenden Sie Mecab mit Python 3
[Python] Mit CGIHTTPServer umleiten
Sprachanalyse mit Python
Denken Sie an Yaml mit Python
Kinesis mit Python betreiben
Erste Schritte mit Python
Zundko Getter mit Python
Behandle Excel mit Python
Ohmsches Gesetz mit Python
Primzahlbeurteilung mit Python
Führen Sie Blender mit Python aus
Löse Mathe mit Python
Heatmap von Python + matplotlib
Asynchron mit Python verarbeiten